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

OceanBase数据库集群常见操作——添加节点

Tonyhacks 2023-10-20
216

添加节点

可以向 OceanBase 集群中添加节点,添加节点适用于弹性扩容场景和调整部署场景。

  • 弹性扩容场景:扩容后,Zone 内有更多的节点容纳 Unit,从而可以执行后续的迁移 Unit、调整租户的 UNIT_NUM、新建租户等操作。
  • 调整部署场景:调整部署场景,包括将集群的部署方式从同城三中心调整为三地五中心,以及机房裁撤场景下将 Zone 从一个机房搬迁到另一个机房。该场景需要先增加 Zone,再在该 Zone 内增加节点,然后调整租户的 Locatity 属性。

OceanBase 数据库的弹性扩容能力相比于传统数据库具有明显的架构优势。传统数据库的数据存放于一台机器上,而 OceanBase 数据库能够把数据打散到不同机器,从而能够解决可扩展性的问题,真正体现出分布式架构的优势。当集群或者租户的容量不足时,只需要增加更多的节点,集群就能够容纳更多的租户,租户也能够容纳更多的数据和业务流量。同样,在集群或者租户的容量富余时,也可以将节点下线,从而降低成本。

多副本部署能力同样是 OceanBase 数据库相比于传统数据库的架构优势,多副本部署能力是 OceanBase 数据库具备多级无损容灾能力的基础,包括单机级无损容灾、机房级无损容灾、城市级无损容灾等能力。此外,OceanBase 数据库支持灵活地调整集群部署架构,从而可以满足业务场景的技术演进。

前提条件

  • 请确认待增加的所有 OBServer 服务器已完成相关配置,具体操作可参见 部署前准备 章节。
  • 添加节点前需要为所有 OBServer 服务器安装数据库软件,您可以从 OceanBase 官网的下载中心下载对应版本的 OceanBase 数据库软件安装包,或者从 OceanBase 技术支持人员处获取。

操作步骤

  1. (可选)对于需要添加 Zone 后再向该 Zone 中添加节点的场景,请确认已添加新的 Zone,添加 Zone 的操作请参见 添加 Zone

  2. 通过 ssh 登录到待添加的 OBServer 服务器,初始化 OBServer 服务器并配置时钟源。

    初始化 OBServer 服务器的详细操作,请参见 使用 oatcli 初始化 OBServer 服务器

    配置时钟源的详细操作,请参见 配置时钟源

  3. 通过 ssh 登录到待添加的 OBServer 服务器,安装 OceanBase 数据库的 RPM 包。

    在添加节点前,需要为待添加的所有 OBServer 服务器安装数据库软件。

    命令如下:

    `[root@xxx /]#cd $rpm_dir

    [root@xxx $rpm_dir]#rpm -ivh $rpm_name`

    其中,rpm_dir 表示存放 RPM 包的目录;$rpm_name 表示 RPM 包的名称。

  4. 初始化 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"`
  1. (可选)如果需要添加多个节点,请重复执行步骤 2 ~ 5。

  2. 向集群中添加节点。

    1. 使用 root 用户登录到集群的 sys 租户。

      连接示例如下,连接数据库时请以实际环境为准。

      obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A

      有关更加详细的连接数据库的操作指引,参见 连接数据库概述(MySQL 模式) 和 连接数据库概述(Oracle 模式)

    2. 执行以下命令,向集群的 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 服务器才可以提供服务。

  3. 执行成功后,可以查询 DBA_OB_SERVERS 视图进行确认。

    查询示例如下:

    SELECT * FROM oceanbase.DBA_OB_SERVERS;

    列表中有刚刚添加的 OBServer 服务器,则表示添加成功。

后续操作

增加节点主要用于弹性扩容场景和调整部署场景:

  • 对于弹性扩容场景,增加节点后,节点所在的 Zone 内有更多的节点容纳 Unit,从而可以执行后续的迁移 Unit、调整租户的 UNIT_NUM 以及新建租户等操作,相关操作可参考以下内容:
  • 调整部署场景:调整部署场景,包括将集群的部署方式从同城三中心调整为三地五中心,以及机房裁撤场景下将 Zone 从一个机房搬迁到另一个机房。该场景需要先增加 Zone,再在该 Zone 内增加节点,然后调整租户的 Locality 属性。调整租户 Locality 属性的相关操作请参见 修改 Locality
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论