#集群实例扩缩容

YashanDB支持通过yasboot工具对共享集群部署中的实例节点(包括YCS实例和数据库实例)进行在线扩容或缩容,且扩缩容期间不影响整个集群的使用。

Note:

# 在线增加实例

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

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

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

  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 database
    
    ……
    
    Automatic Failover: Enabled in Zero Data Loss Mode 
    
    # Enabled表示已开启yasom仲裁选主,需将其关闭再进行后续操作
    $ yasboot election enable off -c yashandb
    
  4. 执行yasboot config node gen命令,生成增加实例的配置文件。

    $ 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 \
    --node 2 \
    --vips vip1,vip2        # 原集群未配置VIP时,不需要指定--vips选项
    

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

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

    $ yasboot host add -c yashandb -t hosts_add.toml
    
  6. 按需在新服务器上完成以下配置。

    • 若扩容前数据库已开启资源管理功能,新服务器上也需执行yasboot host cgroup命令创建cgroup目录。

      $ yasboot host cgroup create -c yashandb --sudo-username root --sudo-password ****** --host-id host004
      
    • 若扩容前其他服务器均已配置开机自启动,新服务器也必须配置开机自启动

  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仲裁选主)。

# 在线删除实例

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

  2. 检查并关闭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 database
    
    ……
    
    Automatic Failover: Enabled in Zero Data Loss Mode 
    
    # Enabled表示已开启yasom仲裁选主,需将其关闭再进行后续操作
    $ yasboot election enable off -c yashandb
    
  3. 执行如下命令,查看待删除的目标实例ID。

    $ yasboot cluster status -c yashandb -d
    # nodeid中冒号前的部分即为节点ID,例如1-1:1对应的节点ID为1-1
    
  4. 执行如下命令,删除实例。

    • 场景1:删除正常实例

      # 单次删除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
      
    • 场景2:删除断连实例

      若待删除的实例所在服务器已无法连接,须确认该服务器上的YCS实例已关闭并指定--with-unconnected-host参数进行缩容。

      # 1. 确认待删除的实例所在服务器上的YCS实例已关闭
      $ ycsctl status
      
      # 2. 若待删除的实例所在服务器上的YCS实例为OFFLIN状态,可继续执行缩容操作;否则需先登录该服务器执行ycsctl stop ycs停止YCS实例再进行后续操作
      
      # 3. 执行缩容操作
      $ yasboot node remove -c yashandb --node-id 1-3 -d --with-unconnected-host --purge 
      +----------------------------------------------------------------------------------------------------+
      | type | uuid             | name       | hostid | index    | status  | return_code | progress | cost |
      +----------------------------------------------------------------------------------------------------+
      | task | 7c7d71db43810b35 | NodeRemove | -      | yashandb | SUCCESS | 0           | 100      | 5    |
      +------+------------------+------------+--------+----------+---------+-------------+----------+------+
      task completed, status: SUCCESS
      
  5. (可选)备份数据库。

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

    Note:

    共享集群缩容后,如需使用缩容前的历史备份集(备份集中实例数多于实际集群现有实例数)进行恢复,恢复完成后需执行如下命令清理多余数据文件:

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

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

  8. (可选)若缩容时指定了--with-host参数(即移除了空服务器),缩容完成后可对移除的服务器进行环境清理:

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

    2. )清理可能残留的进程,例如yasdb,yascs。

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

    4. )清理可能残留的YashanDB相关的环境变量。

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