#组内备节点扩缩容

YashanDB支持通过yasboot工具对存算一体分布式集群部署中的DN组或MN组内备节点进行扩/缩容,执行具体操作前请仔细阅读相关注意事项

Note:

  • 每次操作只能对1个组的备节点进行扩缩容。

  • 如果扩缩容过程中现有节点出现故障、扩缩容失败等异常,请参考扩缩容异常处理进行处理。

# 在线增加组内备节点

  1. 如需新增服务器并增加MN组或DN组内备节点,请先参照安装前准备检查并确保新服务器系统的各项环境已满足要求。

  2. 以安装用户登录数据库的现有节点所在服务器。

  3. 执行如下命令,查看待扩容的目标组的组ID。

    $ yasboot cluster status -c yashandb -d
    +-------------------------------------------------------------------------------------------------------------------------------------------------+
    | hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address   | data_path                        |
    +-------------------------------------------------------------------------------------------------------------------------------------------------+
    | host0001 | mn        | 1-1:1  | 56961 | open            | normal          | primary       | 192.168.1.2:1678 | /data/yashan/yasdb_data/mn-1-1   |
    |          +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    |          | dn        | 3-2:7  | 57029 | open            | normal          | standby       | 192.168.1.2:1698 | /data/yashan/yasdb_data/dn-3-2   |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    | host0002 | mn        | 1-2:2  | 57024 | open            | normal          | standby       | 192.168.1.3:1678 | /data/yashan/yasdb_data/mn-1-2   |
    |          +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    |          | cn        | 2-1:4  | 57024 | open            | normal          | primary       | 192.168.1.3:1688 | /data/yashan/yasdb_data/cn-2-1   |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    | host0003 | mn        | 1-3:3  | 57021 | open            | normal          | standby       | 192.168.1.4:1678 | /data/yashan/yasdb_data/mn-1-3   |
    |          +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    |          | cn        | 2-2:5  | 57021 | open            | normal          | primary       | 192.168.1.4:1688 | /data/yashan/yasdb_data/cn-2-2   |
    |          +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    |          | dn        | 3-1:6  | 57021 | open            | normal          | primary       | 192.168.1.4:1698 | /data/yashan/yasdb_data/dn-3-1   |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+
    

    根据回显信息可知,DN组的组ID为3,MN组的组ID为1。

  4. 结合实际场景,执行相应操作。

    • 场景1:新增服务器并增加备节点

      1. ) 执行yasboot config node gen命令,生成yashandb_add.tomlhosts_add.toml配置文件。
      $ yasboot config node gen -c yashandb -u yashan -p password --ip ip1,ip2 --port 22 \
      --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data \
      --log-path /data/yashan/log -g 3 --node 2
      
      1. ) 执行如下命令,远程连接新服务器并为其安装YashanDB。
      $ yasboot host add -c yashandb -t hosts_add.toml
      

      Note:

      按需在新服务器上完成以下配置:

      $ yasboot host cgroup create -c yashandb --sudo-username root --sudo-password ****** --host-id host004
      
      • 若扩容前其他服务器均已配置开机自启动,新服务器上也必须配置开机自启动
    • 场景2:在现有服务器上增加备节点

      执行yasboot config node gen命令,生成yashandb_add.toml配置文件。

      $ yasboot config node gen -c yashandb --host-ids host0001,host0002 -g 3 --node 2
      
  5. 在上述生成配置文件的服务器上执行如下命令,增加备节点。

    $ yasboot node add -c yashandb -t yashandb_add.toml
    +-------------------------------------------------------------------------------------------------+
    | type | uuid             | name    | hostid | index    | status  | return_code | progress | cost |
    +-------------------------------------------------------------------------------------------------+
    | task | 834a8c23c37ca1f4 | NodeAdd | -      | yashandb | SUCCESS | 0           | 100      | 3    |
    +------+------------------+---------+--------+----------+---------+-------------+----------+------+
    task completed, status: SUCCESS
    

    任务显示成功并不表示扩容任务已全部成功,可能仍有部分后台任务在完成数据的同步等操作。可以通过task list命令查看扩容相关的任务是否都成功。

    $ yasboot task list -c yashandb --search type=NodeAdd
    
  6. (可选)备份数据库。

    建议对数据库进行备份,确保扩容后有可用于恢复的基线备份集。

  7. 若采用新增服务器的方式进行扩容,扩容完成后需要把hosts_add.toml中的[[host]]内容复制粘贴到hosts.toml的末尾,以免升级时仍用旧的hosts信息。

  8. 可按需开启DN组内节点的自动选主功能,保障业务连续性:

# 在线删除组内备节点

  1. 以安装用户登录数据库安装服务器。

  2. 执行如下命令,查看待删除的目标节点ID。

    $ yasboot cluster status -c yashandb -d
    # nodeid中冒号前的部分即为节点ID,例如1-1:1对应的节点ID为1-1
    
  3. 请先检查并关闭yasom仲裁选主:

    若为一主一备环境需要执行当前操作检查并关闭yasom仲裁选主,若为一主多备环境,不论是否开启自动选主均不影响通过yasboot执行的在线缩容。

    $ yasboot election config show -c yashandb
    group 1
    Protection Mode: MAXIMUM PROTECTION
    Members:
        [1-1:1] - Primary database
        [1-2:2] - Physical standby node
    
    ……
    
    Automatic Failover: Enabled in Zero Data Loss Mode 
    
    # Enabled表示已开启yasom仲裁选主,需将其关闭再进行后续操作
    $ yasboot election enable off -c yashandb
    
  4. 执行如下命令,删除备节点。

    # 可以增加--with-host参数,成功删除备节点后继续删除当前数据库环境中所有不存在数据库节点和yasom进程的空服务器的信息
    
    # 单次缩容1个备节点
    $ yasboot node remove -c yashandb -n 1-1 --purge
    +----------------------------------------------------------------------------------------------------+
    | type | uuid             | name       | hostid | index    | status  | return_code | progress | cost |
    +----------------------------------------------------------------------------------------------------+
    | task | 7c7d71db43810b33 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
    +------+------------------+------------+--------+----------+---------+-------------+----------+------+
    task completed, status: SUCCESS
    
    # 单次删除多个备节点,ID间使用逗号隔开
    $ yasboot node remove -c yashandb --node-ids 1-1,1-2 --purge
    +----------------------------------------------------------------------------------------------------+
    | type | uuid             | name       | hostid | index    | status  | return_code | progress | cost |
    +----------------------------------------------------------------------------------------------------+
    | task | 7c7d71db43810b33 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
    +------+------------------+------------+--------+----------+---------+-------------+----------+------+
    +----------------------------------------------------------------------------------------------------+
    | task | 7c7d71db43810b34 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
    +------+------------------+------------+--------+----------+---------+-------------+----------+------+
    task completed, status: SUCCESS
    

    删除备节点后,会将该备节点停止。

  5. (可选)备份数据库。

    建议对数据库进行备份,确保缩容后有可用于恢复的基线备份集。

  6. 若缩容时指定了--with-host参数(即移除了空服务器),缩容完成后需要更新hosts.toml文件的[[host]]内容,删除对应服务器相关信息,以免升级时仍用旧的hosts信息。

  7. 删除备节点后,可根据数据库高可用配置情况还原/开启自动选主功能保障业务连续性:

pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流