#组内备节点扩缩容
YashanDB支持通过yasboot工具对存算一体分布式集群部署中的DN组或MN组内备节点进行扩/缩容,执行具体操作前请仔细阅读相关注意事项。
Note:
每次操作只能对1个组的备节点进行扩缩容。
如果扩缩容过程中现有节点出现故障、扩缩容失败等异常,请参考扩缩容异常处理进行处理。
# 在线增加组内备节点
以安装用户登录当前数据库中yasboot工具所在服务器。
执行如下命令,查看待扩容的目标组的组ID。
$ yasboot cluster status -c yashandb -d -p sys_password +-------------------------------------------------------------------------------------------------------------------------------------------------+ | 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。
结合实际场景执行相应命令,生成配置文件。
场景1:向分布式集群新增服务器并增加MN组或DN组内备节点,使用--ip参数
$ 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执行成功后,会生成hosts_add.toml和yashandb_add.toml两个配置文件。
场景2:在分布式集群中现有服务器上增加MN组或DN组内备节点,使用--host-ids参数
$ yasboot config node gen -c yashandb --host-ids host0001,host0002 -g 3 --node 2执行成功后,会生成yashandb_add.toml配置文件。
配置文件的详细示例请查阅yashandb_add.toml以及hosts_add.toml,命令详情请查阅yasboot config node gen。
部署新服务器。
) 请先参照安装前准备检查并确保新服务器系统的各项环境已满足要求。
) 执行如下命令,部署新服务器。
$ yasboot host add -c yashandb -t hosts_add.toml +-------------------------------------------------------------------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +-------------------------------------------------------------------------------------------------+ | task | b5328fe3dbf4a2be | HostAdd | - | yashandb | SUCCESS | 0 | 100 | 9 | +------+------------------+---------+--------+----------+---------+-------------+----------+------+ task completed, status: SUCCESS) 若扩容前其他服务器均已配置开机自启动,新服务器也必须配置开机自启动。
执行如下命令,增加备节点。
$ 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若扩容前数据库环境已开启资源管理功能,新增的服务器中需要创建cgroup目录,可参考yasboot相关命令。
$ yasboot host cgroup create -c yashandb --sudo-username root --sudo-password ****** --host-id host0004(可选)备份数据库。
建议对数据库进行备份,确保扩容后有可用于恢复的基线备份集。
将hosts_add.toml中的[[host]]内容复制粘贴到hosts.toml的末尾,以免升级时仍用旧的hosts信息。
可按需开启DN组内节点的自动选主功能,保障业务连续性:
# 在线删除组内备节点
以安装用户登录当前数据库中yasboot工具所在服务器。
执行如下命令,查看待删除的目标节点ID。
$ yasboot cluster status -c yashandb -d -p sys_password # nodeid中冒号前的部分即为节点ID,例如1-1:1对应的节点ID为1-1请先检查并关闭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表示已开启仲裁,需关闭仲裁再进行缩容 $ yasboot election enable off -c yashandb执行如下命令,删除备节点。
# 可以增加--with-host参数,成功删除备节点后继续删除当前数据库环境中所有不存在数据库节点和yasom进程的空服务器的信息 $ yasboot node remove --node-ids 3-3 --purge --force -c yashandb +----------------------------------------------------------------------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +----------------------------------------------------------------------------------------------------+ | task | 7c7d71db43810b33 | NodeRemove | - | yashandb | SUCCESS | 0 | 100 | 5 | +------+------------------+------------+--------+----------+---------+-------------+----------+------+ task completed, status: SUCCESS删除备节点后,会将该备节点停止。
(可选)备份数据库。
建议对数据库进行备份,确保缩容后有可用于恢复的基线备份集。
若缩容时指定了--with-host参数(即移除了空服务器),缩容完成后需要更新hosts.toml文件的[[host]]内容,删除对应服务器相关信息,以免升级时仍用旧的hosts信息。
删除备节点后,可根据数据库高可用配置情况还原/开启自动选主功能保障业务连续性:

