您可以向管理的集群中添加 OBServer 节点。
关于 OBServer
OceanBase 数据库是单进程软件,进程名为 observer,通常每个机器启动一个进程就是一个节点(节点不完全等同于物理机器)。OBServer 是 OceanBase 数据库的服务器,observer 进程就运行在该服务器上。
每一个 OceanBase 数据库的进程 observer 由 IP 和端口作为唯一标识。通常一台物理或者虚拟服务器运行一个 observer 进程。observer 进程作为 OceanBase 数据库最核心的进程负责几乎所有数据库内核功能,包括 SQL 引擎、存储引擎和事务引擎。分布式的功能也同样在这个进程中,包括 RPC 通信、负载均衡和分区管理等。
通过命令向集群中添加 OBServer 节点
通过命令添加 OBServer 节点前,需要提前准备好对应版本的 OceanBase 数据库 RPM 包。有关 OceanBase 数据库 RPM 包的获取方式,请联系 OceanBase 技术支持人员。
通过
root用户登录到 OceanBase 数据库的sys租户。(可选)依次执行以下语句,添加 Zone,并设置 Zone 的区域与 IDC 属性。
说明
如果是向已有的 Zone 中添加 OBServer 节点,则该步骤可省略。如果需要新增 Zone 并向其中添加 OBServer 节点,则需要执行该步骤。
本节以待添加 Zone 为
zone4,且REGION='HANGZHOU',IDC='HZ1'为例,提供操作指导。obclient> ALTER SYSTEM ADD ZONE zone4 REGION HANGZHOU; obclient> ALTER SYSTEM START ZONE zone4; obclient> ALTER SYSTEM ALTER ZONE zone4 SET REGION='HANGZHOU',IDC='HZ1';通过
ssh登录到待添加的 OBServer,进行安装前检查。进入工具所在的目录。
[root@hostname /]# cd /root/t-oceanbase-antman/clonescripts执行以下命令,开始检查。
建议您使用 oat-cli 工具进行检查,有关 oat-cli 工具的详细信息及使用,请参见当前版本对应的 《OceanBase 数据库 部署指南》文档。
[root@hostname clonescripts]# sh precheck.sh -m ob执行以下命令,检查时钟同步情况,保证所有节点的时钟偏差在 100 ms 以内。
其中,
$IP表示集群中其他 OBServer 的 IP 地址。[root@hostname /]# ntpdate $IP
安装 OceanBase 数据库的 RPM 包。
其中,
rpm_dir表示存放 RPM 包的目录;$rpm_name表示 RPM 包的名称。[root@hostname /]# cd $rpm_dir [root@hostname $rpm_dir]# rpm -i --prefix=/home/admin/oceanbase $rpm_name在待添加的 OBServer 服务器上创建
/data/1和/data/log1目录,并将目录的拥有者(Owner)修改为admin。通常情况下,使用
/data/1作为数据目录,/data/log1作为日志目录。[root@xxx /]# mkdir -p /data/1 /data/log1 [root@xxx /]# cd data [root@xxx data]# ll total 8 drwxr-xr-x 2 root root 4096 Nov 18 14:24 1 drwxr-xr-x 2 root root 4096 Nov 18 14:24 log1 [root@xxx data]# cd .. [root@xxx /]# chown -R admin:admin data [root@xxx /]# cd data [root@xxx data]# ll total 8 drwxr-xr-x 2 admin admin 4096 Nov 18 14:24 1 drwxr-xr-x 2 admin admin 4096 Nov 18 14:24 log1初始化 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 注册到集群。
设置
admin用户的 ulimit。[admin@hostname oceanbase]$ ulimit -s 10240; ulimit -c unlimited配置环境变量。
[admin@hostname oceanbase]$ export LD_LIBRARY_PATH=/home/admin/oceanbase/lib:$LD_LIBRARY_PATH LD_PRELOAD=''启动 OBServer。
语句如下:
[admin@hostname oceanbase]$ /home/admin/oceanbase/bin/observer -i eth0 -P XXXX -p YYYY -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xxx.xxx.xxx.xxx:xxxx:xxx.xxx.xxx.xxx:xxxx xxx.xxx.xxx.xxx:xxxx:yyyy' -c 20190716 -n obdemo -o "memory_limit_percentage=90,memstore_limit_percentage=60,datafile_disk_percentage=80,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"其中:
-P参数用于指定 RPC 端口号。-p参数用于指定直连端口号。-z参数用于指定待加入的 Zone。-d参数用于指定数据的存储目录。-r参数用于指定待添加的 OBServer 的 IP 地址列表。-c参数用于指定集群 ID。-n参数用于指定集群名。-o参数用于指定启动配置项。更多配置项的详细信息,请参见 系统配置项。
注意
在启动 OBServer 时,请务必指定正确的 Zone 名称和初始化参数值。
再次通过
root用户登录到 OceanBase 数据库的sys租户,向集群中添加 OBServer 节点。其中,
$IP表示待添加的 OBServer 的 IP 地址;$PORT表示 OBServer 的 RPC 端口号,默认为2882。obclient> ALTER SYSTEM ADD SERVER '$IP:$PORT' ZONE 'zone4';该操作会将 OBServer 加入到服务列表,只有服务列表中的 OBServer 才可以提供服务。
添加后,可以执行以下语句,确认列表中是否有刚才添加的 OBServer,如果有,则表示添加成功。
obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;




