首批通过分布式安全可靠测评,为关键业务系统打造
添加节点
更新时间:2025-04-17 10:26:27
您可以向管理的集群中添加节点。
关于节点
OceanBase 数据库是单进程软件,进程名为 observer,通常每个机器启动一个进程就是一个节点(节点不完全等同于物理机器)。每一个 OceanBase 数据库的进程 observer 由 IP 和端口作为唯一标识。通常一台物理或者虚拟服务器运行一个 observer 进程。observer 进程作为 OceanBase 数据库最核心的进程负责几乎所有数据库内核功能,包括 SQL 引擎、存储引擎和事务引擎。分布式的功能也同样在这个进程中,包括 RPC 通信、负载均衡和分区管理等。
通过命令向集群中添加节点
通过命令添加节点前,需要确认待增加的所有 OBServer 服务器已完成相关配置,具体操作可参见 部署前准备 章节。
使用
root用户登录集群的sys租户。(可选)依次执行以下语句,添加 Zone,并设置 Zone 的区域与 IDC 属性。
说明
如果是向已有的 Zone 中添加节点,则该步骤可省略。如果需要新增 Zone 并向其中添加节点,则需要执行该步骤。
本节以待添加 Zone 为
zone4,且REGION='HANGZHOU',IDC='HZ1'为例,提供操作指导。obclient> ALTER SYSTEM ADD ZONE zone4 REGION 'HANGZHOU',IDC 'HZ1'; obclient> ALTER SYSTEM START ZONE zone4;通过
ssh登录到待添加的 OBServer 服务器,初始化 OBServer 服务器并配置时钟源。初始化 OBServer 服务器的详细操作,请参见 使用 oatcli 初始化 OBServer 服务器。
配置时钟源的详细操作,请参见 配置时钟源。
安装 OceanBase 数据库的 RPM 包。
其中,
rpm_dir表示存放 RPM 包的目录;$rpm_name表示 RPM 包的名称。[root@hostname /]# cd $rpm_dir [root@hostname $rpm_dir]# rpm -i -ivh $rpm_name初始化 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表示待添加节点的集群名。示例如下:
[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 进程。
语句如下:
[root@xxx admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -i eth0 -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=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"其中:
-i:用于指定网卡名,需要根据当前机器环境修改。-P参数用于指定 RPC 端口号。一般为 2882,除非有明确目的,不建议修改。-p参数用于指定直连端口号。一般为 2881,除非有明确目的,一般不建议修改。-z参数用于指定待加入的 Zone。-d参数用于指定数据的存储目录。-r参数用于指定待添加的节点的 IP 地址列表。-c参数用于指定集群 ID。-n参数用于指定集群名。-o参数用于指定启动配置项,需要根据实际情况配置。更多配置项的详细信息,请参见 系统配置项。
再次使用
root用户登录集群的sys租户,向集群中添加节点。其中,
$IP表示待添加的节点的 IP 地址;$PORT表示节点的 RPC 端口号,默认为2882。obclient> ALTER SYSTEM ADD SERVER '$IP:$PORT' ZONE 'zone4';该操作会将节点加入到服务列表,只有服务列表中的节点才可以提供服务。
添加后,可以执行以下语句,确认列表中是否有刚才添加的节点,如果有,则表示添加成功。
obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;
通过 OBD 向集群中添加节点
功能适用性
目前 OceanBase 数据库企业版暂不支持 OBD 功能。
通过 OBD 只能向 OBD 管理的集群中添加节点。若您的机器无法连接公网,在 OBD 添加节点前,您需从官网 下载中心 下载对应版本的 OceanBase 数据库安装包和依赖库包,并将安装包配置到 OBD 本地镜像库中,详细操作可参见 OBD 文档 安装并配置 OBD。
在 OBD 所在机器的操作用户下,写一份新的配置文件,执行如下命令使用 OBD 进行部署。
obd cluster deploy <new_deploy_name> -c <deploy_config_path>您需注意以下几点。
参数
new_deploy_name为部署集群名称,可以理解为配置文件的别名,不能和已存在的集群名重复(可执行obd cluster list命令查看现有集群名)。deploy_config_path为配置文件路径,建议新集群的配置文件尽量和待添加节点的集群配置保持一致,配置文件中各配置项的介绍可参见 OBD 文档 配置文件说明。此命令会检查配置文件中
home_path和data_dir指向的目录文件是否为空,若目录文件不为空,则报错。此时可以加上-f选项,强制清空目录文件。
参考如下步骤将新部署集群的配置文件内容分别添加到原集群的配置文件对应位置中。
查看配置路径
obd cluster list打开原集群配置文件,并添加新部署集群的配置
vim .obd/cluster/<old_deploy_name>/config.yaml修改原集群配置文件前建议先备份原集群的配置文件,以防操作过程中出现未预期的问题。
在原集群配置文件中添加新集群配置时,需将新集群的节点修改为正确的 Zone,例如:本文以添加节点到 zone4 为例,则添加的新节点所属的 Zone 需配置为 zone4,配置文件中示例如下。
oceanbase-ce: servers: - name: server1 ip: 10.10.10.1 - name: server2 # 新增的节点 ip: 10.10.10.2 global: ...... # 省略部分配置文件 server1: zone: zone1 server2: zone: zone4 # 修改所属 Zone 为 zone4
执行如下命令再次启动原集群。
obd cluster start <old_deploy_name>连接 OceanBase 数据库,依次执行以下语句,添加 Zone,并设置 Zone 的区域与 IDC 属性。
说明
如果是向已有的 Zone 中添加节点,则该步骤可省略。如果需要新增 Zone 并向其中添加节点,则需要执行该步骤。
本节以待添加 Zone 为 zone4,且 REGION='HANGZHOU',IDC='HZ1' 为例,提供操作指导。
obclient> ALTER SYSTEM ADD ZONE zone4 REGION 'HANGZHOU',IDC 'HZ1'; obclient> ALTER SYSTEM START ZONE zone4;执行如下命令,向集群中添加节点。
其中,
IP表示待添加的节点的 IP 地址;PORT表示节点的 RPC 端口号,默认为2882。ALTER SYSTEM ADD SERVER 'IP:PORT' [,'IP:PORT'...] [ZONE='zone']; # example ALTER SYSTEM ADD SERVER '10.10.10.2:2882' ZONE='zone4';该操作会将节点加入到服务列表,只有服务列表中的节点才可以提供服务。
添加后,可以执行以下语句,确认列表中是否有刚才添加的节点,如果有,则表示添加成功。
obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;参考如下步骤清除 OBD 中新集群的信息。
清除新集群信息可以防止出现误操作,比如对新集群执行 destroy 命令导致新增节点的进程被终止。
查看配置路径
obd cluster list删除 OBD 中新集群的信息
rm -rf .obd/cluster/<new_deploy_name>