首批通过分布式安全可靠测评,为关键业务系统打造
添加节点
更新时间:2026-03-21 13:52:42
可以向 OceanBase 集群中添加节点,添加节点适用于弹性扩容场景和调整部署场景。
弹性扩容场景:扩容后,Zone 内有更多的节点容纳 Unit,从而可以执行后续的迁移 Unit、调整租户的
UNIT_NUM、新建租户等操作。调整部署场景:调整部署场景,包括将集群的部署方式从同城三中心调整为三地五中心,以及机房裁撤场景下将 Zone 从一个机房搬迁到另一个机房。该场景需要先增加 Zone,再在该 Zone 内增加节点,然后调整租户的 Locatity 属性。
OceanBase 数据库的弹性扩容能力相比于传统数据库具有明显的架构优势。传统数据库的数据存放于一台机器上,而 OceanBase 数据库能够把数据打散到不同机器,从而能够解决可扩展性的问题,真正体现出分布式架构的优势。当集群或者租户的容量不足时,只需要增加更多的节点,集群就能够容纳更多的租户,租户也能够容纳更多的数据和业务流量。同样,在集群或者租户的容量富余时,也可以将节点下线,从而降低成本。
多副本部署能力同样是 OceanBase 数据库相比于传统数据库的架构优势,多副本部署能力是 OceanBase 数据库具备多级无损容灾能力的基础,包括单机级无损容灾、机房级无损容灾、城市级无损容灾等能力。此外,OceanBase 数据库支持灵活地调整集群部署架构,从而可以满足业务场景的技术演进。
前提条件
请确认待增加的所有 OBServer 服务器已完成相关配置,具体操作可参见 部署前准备 章节。
添加节点前需要为所有 OBServer 服务器安装数据库软件,您可以从 OceanBase 官网的下载中心下载对应版本的 OceanBase 数据库软件安装包,或者从 OceanBase 技术支持人员处获取。
操作步骤
说明
本节主要介绍如何通过命令手动向集群中添加节点,对于 OceanBase 数据库社区版,如果需要通过 obd 向 OceanBase 集群中添加节点,可参考 obd 产品文档 中 集群扩容 的相关内容进行操作。
(可选)对于需要添加 Zone 后再向该 Zone 中添加节点的场景,请确认已添加新的 Zone,添加 Zone 的操作请参见 添加 Zone。
通过
ssh登录到待添加的 OBServer 服务器,初始化 OBServer 服务器并配置时钟源。初始化 OBServer 服务器的详细操作,请参见 使用 oatcli 初始化 OBServer 服务器。
配置时钟源的详细操作,请参见 配置时钟源。
通过
ssh登录到待添加的 OBServer 服务器,安装 OceanBase 数据库的 RPM 包。在添加节点前,需要为待添加的所有 OBServer 服务器安装数据库软件。
命令如下:
[root@xxx /]#cd $rpm_dir [root@xxx $rpm_dir]#rpm -ivh $rpm_name其中,
rpm_dir表示存放 RPM 包的目录;$rpm_name表示 RPM 包的名称。初始化 OceanBase 数据库的目录。
OceanBase 数据库的数据目录通常建议设置在独立的磁盘上,然后通过软链接方式链接到软件的
Home目录下面。[root@xxx admin]#su - admin -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable,slog} -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,oob_clog} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name -bash-4.2$ for t in {etc3,sort_dir,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done -bash-4.2$ for t in {clog,etc2,ilog,oob_clog};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done其中,
cluster_name表示待添加 OBServer 服务器的集群名。示例如下:
[root@xxx admin]#su - admin -bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sort_dir,sstable,slog} -bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2,ilog,oob_clog} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo -bash-4.2$ for t in {etc3,sort_dir,sstable,slog};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done -bash-4.2$ for t in {clog,etc2,ilog,oob_clog};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done启动节点 observer 进程。
执行以下命令,启动 observer 进程。
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -I xx.xx.xx.xx -P XXXX -p YYYY -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xx.xx.xx.xx:xxxx:yyyy' -c 20190716 -n obdemo -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"相关参数说明如下:
-I:参数用于指定待启动的节点 IP。在多机部署场景下,不能指定127.0.0.1作为目标 IP。通过指定网卡名来启动节点(例如
-i eth0)的方式在当前版本依然可以使用,但建议使用指定 IP(例如,-I 10.10.10.1)来启动。此外,通过同时指定 IP 和网卡名(例如-I 10.10.10.1 -i eth0)来启动节点也可以,但不建议这么用。对于当前版本,支持指定的节点 IP 为 ipv6 地址,使用时需要注意以下事项:
- ipv6 地址分为 Global 地址和 Link 地址,建议使用 Global 地址。
- 需要在
-I前,添加-6。
-c:用于指定集群 ID。其值可通过SHOW PARAMETERS LIKE 'cluster_id';语句获取。-p:用于指定 SQL 端口号。一般为 2881,除非有明确目的,一般不建议修改。-P:用于指定 RPC 端口号。一般为 2882,除非有明确目的,不建议修改。-n:用于指定集群名。其值可通过SHOW PARAMETERS LIKE 'cluster';语句获取。本示例中集群名为obdemo。-z:用于指定待加入的 Zone。可通过视图DBA_OB_ZONES查看集群中的 Zone 名。-d:用于指定数据目录。-r:用于指定待添加的 OceanBase 集群的 RS 地址列表。指定的地址为 ipv6 地址时,需要注意以下事项:
- ipv6 地址分为 Global 地址和 Link 地址,建议使用 Global 地址。
- IP 地址需要使用
[]包裹。 - 需要在
-r前,添加-6。
-l:用于指定日志的级别,本示例中为WARN,表示日志级别为 WARNING 级别。有关 OceanBase 数据库日志级别的详细介绍,请参见 日志级别。
-o:用于指定集群的启动配置项,需要根据实际情况配置。使用
-o参数时,需满足以下条件:不分大小写,但是推荐按照
observer.config.bin中的名称来写。配置项名不能包含以下特殊字符:空格、
\r、\n、\t配置项名和配置项值中间必须有等号(=)。
配置项之间使用英文逗号(,)进行分割。
语句中:
system_memory:用于指定 OceanBase 数据库内部保留内存,默认是 30G。datafile_size:用于指定 OceanBase 数据库数据文件 SSTable 的大小(一次性初始化),根据/data/1/可用空间评估,建议不少于 100G,同时又保留一些剩余空间。config_additional_dir:用于指定参数文件的冗余目录。
示例如下:
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -I xx.xx.xx.1 -c 20221216 -p 2881 -P 2882 -z zone4 -n obdemo -d /home/admin/oceanbase/store/obdemo -r 'xx.xx.xx.1:2882:2881' -l WARN -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"使用 ipv6 地址启动的示例如下:
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -6 -I xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8 -c 20221216 -p 2881 -P 2882 -z zone4 -n obdemo -d /home/admin/oceanbase/store/obdemo -r '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]:2882:2881' -l WARN -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"(可选)如果需要添加多个节点,请重复执行步骤 2 ~ 5。
向集群中添加节点。
使用
root用户登录到集群的sys租户。连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A有关更加详细的连接数据库的操作指引,参见 连接数据库概述(MySQL 模式) 和 连接数据库概述(Oracle 模式)。
执行以下命令,向集群的 Zone 中添加节点。
ALTER SYSTEM ADD SERVER 'svr_ip:svr_port' [,'svr_ip:svr_port'...] [ZONE [=] 'zone_name'];相关参数说明如下:
svr_ip:表示待添加的节点的 IP。svr_port:表示待添加的节点的 RPC 端口。默认为2882。zone_name:表示待添加节点的 Zone。
示例如下:
ALTER SYSTEM ADD SERVER '10.xx.xx.xx:2882','10.xx.xx.xx:2882' ZONE 'zone4';该操作会将 OBServer 服务器加入到服务列表,只有服务列表中的 OBServer 服务器才可以提供服务。
执行成功后,可以查询
DBA_OB_SERVERS视图进行确认。查询示例如下:
SELECT * FROM oceanbase.DBA_OB_SERVERS;列表中有刚刚添加的 OBServer 服务器,则表示添加成功。
后续操作
增加节点主要用于弹性扩容场景和调整部署场景:
对于弹性扩容场景,增加节点后,节点所在的 Zone 内有更多的节点容纳 Unit,从而可以执行后续的迁移 Unit、调整租户的
UNIT_NUM以及新建租户等操作,相关操作可参考以下内容:调整部署场景:调整部署场景,包括将集群的部署方式从同城三中心调整为三地五中心,以及机房裁撤场景下将 Zone 从一个机房搬迁到另一个机房。该场景需要先增加 Zone,再在该 Zone 内增加节点,然后调整租户的 Locality 属性。调整租户 Locality 属性的相关操作请参见 修改 Locality。
相关文档
更多节点相关的运维操作,请参见以下信息: