#双复制组组内备库扩缩容

在双复制组主备部署中,支持对主复制组的备库和备复制组中的非首节点(即级联备)进行在线扩展和删减。

Note:

  • 每次操作只能为1个组增加组内备节点。

  • 执行扩/缩容操作前,请仔细阅读扩缩容注意事项

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

# 在线增加组内备节点

每个备库将由单独的1台服务器承载(后文将称之为“新服务器”),新服务器的操作系统版本建议与现有服务器保持一致。

  1. 准备扩容所需的新服务器,并参照安装前准备检查并确保新服务器系统的各项环境已满足要求。

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

  3. 检查并关闭yasom仲裁选主:

    $ yasboot election config show -c yashandb
    group 1
    Protection Mode: MAXIMUM PROTECTION
    Members:
        [1-1:1] - Primary database
        [1-2:2] - Physical standby database
    
    ……
    
    Automatic Failover: Enabled in Zero Data Loss Mode
    
    # Enabled表示已开启yasom仲裁选主,需将其关闭再进行后续操作
    $ yasboot election enable off -c yashandb
    
  4. 执行如下命令,查看待增加备库的目标复制组ID。

    $ yasboot cluster status -c yashandb -d
    # nodeid中短横线前的数字即为组ID,例如1-1:1对应的组ID为1
    
  5. 执行yasboot config node gen命令,生成增加节点的配置文件。

    # 在双复制组主备部署中扩容,需通过-g参数指定目标复制组的ID
    $ yasboot config node gen -c yashandb \
    -u yashan -p yashan_password --ip ip1,ip2 --port 22 \
    --install-path /data/yashan/yasdb_home \
    --data-path /data/yashan/yasdb_data \
    --log-path /data/yashan/log \
    --begin-port 1688 \
    -g 2 --node 2
    

    执行成功后,会生成yashandb_add.tomlhosts_add.toml两个配置文件。

  6. 执行如下命令,远程连接新服务器并为其安装YashanDB。

    $ yasboot host add -c yashandb -t hosts_add.toml
    
  7. 执行如下命令,增加备节点。

    # 若扩容前数据库已开启密钥管理,则必须指定--wallet-password Your_keystore_password
    
    $ yasboot node add -c yashandb -t yashandb_add.toml
    

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

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

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

  9. 将hosts_add.toml中的[[host]]内容复制粘贴到hosts.toml的末尾,以免升级时仍用旧的hosts信息。

  10. 若为顺利执行扩容而临时调整过某些配置(例如关闭yasom仲裁选主),在扩容完成后应按需还原配置(例如重新开启yasom仲裁选主)。

  11. 若扩容前其他服务器均已配置开机自启动,新服务器也必须配置开机自启动

# 在线删除组内备节点

在双复制组主备部署中,无法直接删除备复制组的首节点(即异地备)。如需删除,需先执行yasboot node switch-remote-standby命令切换另一个节点为异地备角色,待目标节点降为级联备后再执行删除。

  1. 检查并关闭yasom仲裁选主。

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

    $ yasboot cluster status -c yashandb -d
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | source_node | listen_address   | data_path                         |
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | host0001 | db        | 1-1:1  | 73132 | open            | normal          | primary       | -           | 192.168.1.2:1688  | /data/yashan/yasdb_data/db-1-1    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    | host0002 | db        | 1-2:2  | 73199 | open            | normal          | standby       | 1-1:1       | 192.168.1.3:1688  | /data/yashan/yasdb_data/db-1-2    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    | host0003 | db        | 1-3:3  | 73201 | open            | normal          | standby       | 1-1:1       | 192.168.1.4:1688  | /data/yashan/yasdb_data/db-1-3    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    | host0004 | db        | 2-1:4  | 73362 | open            | normal          | standby       | 1-1:1       | 192.168.10.5:1688 | /data/yashan/yasdb_data/db-2-1    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    | host0005 | db        | 2-2:5  | 73435 | open            | normal          | standby       | 2-1:4       | 192.168.10.6:1688 | /data/yashan/yasdb_data/db-2-2    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    | host0006 | db        | 2-3:6  | 73499 | open            | normal          | standby       | 2-1:4       | 192.168.10.7:1688 | /data/yashan/yasdb_data/db-2-3    |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------+-------------------+-----------------------------------+
    
    • 通过nodeid字段可以获取组ID和节点ID,例如2-3:3对应的节点ID为2-3,所属组ID为2。

    • 结合database_role和source_node字段,可知节点2-1是备复制组的首节点(即异地备),如需删除该节点需先执行yasboot node switch-remote-standby命令完成角色切换,使其降为非首节点(即级联备。)

  3. 执行节点缩容命令。

    • 场景1:删除正常节点

      $ yasboot node remove -c yashandb --node-ids 2-3 --purge -f
      +----------------------------------------------------------------------------------------------------+
      | type | uuid             | name       | hostid | index    | status  | return_code | progress | cost |
      +----------------------------------------------------------------------------------------------------+
      | task | 7c7d71db43810b33 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
      +------+------------------+------------+--------+----------+---------+-------------+----------+------+
      task completed, status: SUCCESS
      

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

    • 场景2:删除断连节点

      若待删除的节点所在服务器已无法连接,须指定--with-unconnected-host参数进行缩容。

      # 删除服务器使用强制删除方式,仅删除服务器在yasom的数据,yasagent进程和安装包都将保留
      
      $ yasboot node remove --node-ids 2-3 --purge --force -c yashandb --with-unconnected-host
      +----------------------------------------------------------------------------------------------------+
      | type | uuid             | name       | hostid | index    | status  | return_code | progress | cost |
      +----------------------------------------------------------------------------------------------------+
      | task | 7c7d71db43810b33 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
      +------+------------------+------------+--------+----------+---------+-------------+----------+------+
      task completed, status: SUCCESS
      

      删除节点后,不会停止该节点,如果该节点被monit监控,也不会关闭对该节点的进程监控。

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

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

  5. 若为顺利执行缩容而临时调整过某些配置,在缩容完成后应按需还原配置。

  6. (可选)若缩容时指定了--with-unconnected-host参数(即删除了无法连接的实例),缩容完成后可对无法连接的服务器进行环境清理:

    • 清理可能残留的路径,例如$YASDB_DATA路径、$YASDB_HOME路径、日志路径、本地表空间路径。

    • 清理可能残留的进程,例如yasdb。

    • 清理可能残留的脚本,例如开机自启动脚本。

    • 清理可能残留的YashanDB相关的环境变量。

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