暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase 学习笔记40:如何向管理的集群中添加 OBServer 节点?

250

您可以向管理的集群中添加 OBServer 节点。

关于 OBServer

OceanBase 数据库是单进程软件,进程名为 observer,通常每个机器启动一个进程就是一个节点(节点不完全等同于物理机器)。OBServer 是 OceanBase 数据库的服务器,observer 进程就运行在该服务器上。

每一个 OceanBase 数据库的进程 observer 由 IP 和端口作为唯一标识。通常一台物理或者虚拟服务器运行一个 observer 进程。observer 进程作为 OceanBase 数据库最核心的进程负责几乎所有数据库内核功能,包括 SQL 引擎、存储引擎和事务引擎。分布式的功能也同样在这个进程中,包括 RPC 通信、负载均衡和分区管理等。

通过命令向集群中添加 OBServer 节点

通过命令添加 OBServer 节点前,需要提前准备好对应版本的 OceanBase 数据库 RPM 包。有关 OceanBase 数据库 RPM 包的获取方式,请联系 OceanBase 技术支持人员。

  1. 通过 root 用户登录到 OceanBase 数据库的 sys 租户。

  2. (可选)依次执行以下语句,添加 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';
    
  3. 通过 ssh 登录到待添加的 OBServer,进行安装前检查。

    1. 进入工具所在的目录。

      [root@hostname /]# cd /root/t-oceanbase-antman/clonescripts 
      
    2. 执行以下命令,开始检查。

      [root@hostname clonescripts]# sh precheck.sh -m ob
      
    3. 执行以下命令,检查时钟同步情况,保证所有节点的时钟偏差在 100 ms 以内。

      其中,$IP 表示集群中其他 OBServer 的 IP 地址。

      [root@hostname /]# ntpdate $IP
      
  4. 安装 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
    

    说明

    OceanBase 数据库软件会安装在 /home/admin/oceanbase 目录下。

  5. 在待添加的 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
    
  6. 初始化 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
    
  7. 启动 OBServer,并将 OBServer 注册到集群。

    1. 设置 admin 用户的 ulimit。

      [admin@hostname oceanbase]$ ulimit -s 10240; ulimit -c unlimited
      
    2. 配置环境变量。

      [admin@hostname oceanbase]$ export LD_LIBRARY_PATH=/home/admin/oceanbase/lib:$LD_LIBRARY_PATH LD_PRELOAD=''
      
    3. 启动 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 名称和初始化参数值。

  8. 再次通过 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;
    

通过 OBD 向集群中添加 OBServer 节点

  1. 在 OBD 所在机器的操作用户下,写一份新的配置文件,执行如下命令使用 OBD 进行部署:

    obd cluster deploy <deploy_name> -c <deploy_config_path>
    

    其中,参数 deploy_name 为部署集群名称,可以理解为配置文件的别名,deploy_config_path 为配置文件名。

    此命令会检查 home_path 和 data_dir 指向的目录文件是否为空,若目录文件不为空,则报错。此时可以加上 -f 选项,强制清空目录文件。

    在您执行了 obd cluster deploy 命令之后,OBD 将检查您的目标机器是否有 OceanBase 数据库安装包。如果没有安装包,OBD 将自动从 yum 源获取。

  2. 参考如下步骤将新部署集群的配置文件内容分别添加到原集群的配置文件对应位置中。

    1. 查看配置路径:

      obd cluster list
      
    2. 打开原集群配置文件,并添加新部署集群的配置:

      vim .obd/cluster/<deploy_name>/config.yaml
      
  3. 执行如下命令再次启动集群:

    obd cluster start <deploy_name>
    
  4. 连接 OceanBase 数据库,依次执行以下语句,添加 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';
    
  5. 执行如下命令,向集群中添加 OBServer 节点:

    ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'...] [ZONE='zone'];
    

    该操作会将 OBServer 加入到服务列表,只有服务列表中的 OBServer 才可以提供服务。

    添加后,可以执行以下语句,确认列表中是否有刚才添加的 OBServer,如果有,则表示添加成功。

    obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论