添加节点
可以向 OceanBase 集群中添加节点,添加节点适用于弹性扩容场景和调整部署场景。
- 弹性扩容场景:扩容后,Zone 内有更多的节点容纳 Unit,从而可以执行后续的迁移 Unit、调整租户的
UNIT_NUM、新建租户等操作。 - 调整部署场景:调整部署场景,包括将集群的部署方式从同城三中心调整为三地五中心,以及机房裁撤场景下将 Zone 从一个机房搬迁到另一个机房。该场景需要先增加 Zone,再在该 Zone 内增加节点,然后调整租户的 Locatity 属性。
OceanBase 数据库的弹性扩容能力相比于传统数据库具有明显的架构优势。传统数据库的数据存放于一台机器上,而 OceanBase 数据库能够把数据打散到不同机器,从而能够解决可扩展性的问题,真正体现出分布式架构的优势。当集群或者租户的容量不足时,只需要增加更多的节点,集群就能够容纳更多的租户,租户也能够容纳更多的数据和业务流量。同样,在集群或者租户的容量富余时,也可以将节点下线,从而降低成本。
多副本部署能力同样是 OceanBase 数据库相比于传统数据库的架构优势,多副本部署能力是 OceanBase 数据库具备多级无损容灾能力的基础,包括单机级无损容灾、机房级无损容灾、城市级无损容灾等能力。此外,OceanBase 数据库支持灵活地调整集群部署架构,从而可以满足业务场景的技术演进。
前提条件
- 请确认待增加的所有 OBServer 服务器已完成相关配置,具体操作可参见 部署前准备 章节。
- 添加节点前需要为所有 OBServer 服务器安装数据库软件,您可以从 OceanBase 官网的下载中心下载对应版本的 OceanBase 数据库软件安装包,或者从 OceanBase 技术支持人员处获取。
操作步骤
-
(可选)对于需要添加 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
5. 启动节点 observer 进程。
执行以下命令,启动 observer 进程。
```
[root@xxx admin]$ su - admin
-bash-4.2$ /home/admin/oceanbase/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)来启动节点也可以,但不建议这么用。 -
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 地址列表。 -
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$ /home/admin/oceanbase/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"`
-
(可选)如果需要添加多个节点,请重复执行步骤 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。




