#备库扩缩容
YashanDB支持对备库进行在线扩展/删减,执行具体操作前请仔细阅读相关注意事项。
Note:
如果扩缩容过程中现有节点出现故障、扩缩容失败等异常,请参考扩缩容异常处理进行处理。
# 在线增加备库
每个备库将由单独的1台服务器承载(后文将称之为“新服务器”),新服务器的操作系统版本建议与现有服务器保持一致。
准备扩容所需的新服务器,并参照安装前准备检查并确保新服务器系统的各项环境已满足要求。
以安装用户登录数据库的现有节点所在服务器。
执行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执行成功后,会生成yashandb_add.toml和hosts_add.toml两个配置文件。
执行如下命令,远程连接新服务器并为其安装YashanDB。
$ yasboot host add -c yashandb -t hosts_add.toml按需在新服务器上完成以下配置。
若扩容前数据库已开启资源管理功能,新服务器上也需执行yasboot host cgroup命令创建cgroup目录。
$ yasboot host cgroup create -c yashandb --sudo-username root --sudo-password ****** --host-id host004若扩容前数据库已开启密钥管理功能且创建了加密对象,新服务器上也必须创建钱包文件的存放路径、将其他服务器上对应的TDE文件夹及其文件复制到该路径下、将钱包的根目录WALLET_ROOT参数配置为该路径。
若扩容前其他服务器均已配置开机自启动,新服务器也必须配置开机自启动。
在上述生成配置文件的服务器上执行如下命令,增加备库。
# 若扩容前数据库已开启密钥管理,则必须指定--wallet-password Your_keystore_password $ yasboot node add -c yashandb -t yashandb_add.toml任务显示成功并不表示扩容任务已全部成功,可能仍有部分后台任务在完成数据的同步等操作。可以通过
task list命令查看扩容相关的任务是否都成功。$ yasboot task list -c yashandb --search type=NodeAdd(可选)备份数据库。
建议对数据库进行备份,确保扩容后有可用于恢复的基线备份集。
将hosts_add.toml中的[[host]]内容复制粘贴到hosts.toml的末尾,以免升级时仍用旧的hosts信息。
可按需开启自动选主功能,保障业务连续性:
# 在线删除备库
以安装用户登录数据库安装服务器。
执行如下命令,查看待删除的目标备库ID。
$ yasboot cluster status -c yashandb -d # 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表示已开启yasom仲裁选主,需将其关闭再进行后续操作 $ yasboot election enable off -c yashandb执行如下命令,删除备库。
# 可以增加--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删除备库后,会将该备库停止。
(可选)备份数据库。
建议对数据库进行备份,确保缩容后有可用于恢复的基线备份集。
若缩容时指定了--with-host参数(即移除了空服务器),缩容完成后需要更新hosts.toml文件的[[host]]内容,删除对应服务器相关信息,以免升级时仍用旧的hosts信息。
删除备库后,可根据数据库高可用配置情况,可按需还原自动选主功能相关配置:

