双管理节点数据库重新同步及 zsha2 HA 套件升级
适用场景
- 产品:ZStack Cloud(ZCF)。
- 版本:4.8.x
- 组件:zsha2(多节点 HA 套件)及管理节点的 MariaDB 数据库。
- 触发条件:两台管理节点上的 MariaDB 出现数据不同步,需将 zsha2 HA 套件恢复到一致状态后再升级。
问题现象
本文针对两台管理节点间 MariaDB 数据库出现数据不同步时的修复流程,以及将 zsha2 多节点 HA 套件升级恢复至一致状态的解决方案步骤。
判断方法
- 分别在两台管理节点上执行
zsha2 status、zsha2 db-status以及ceph -s命令进行比对。 - 在两台节点上分别查看
zsha2 db-status,确认备节点已不再持续同步数据库
解决方案
1. 执行前准备
- 在执行恢复操作前,先在云平台UI上禁用全局高可用 (全局 HA)。

*图 1:在 ZStack Cloud 控制台中禁用全局高可用(红框标出)
- 使用
zstack-ctl dump_mysql在两台管理节点上分别备份 MariaDB(主节点和备节点)。* - 确认已有新版本 HA 套件压缩包,并已校验 md5。
2. 数据库同步与 HA 升级步骤
- 查看 HA 服务状态、数据库状态、存储状态:
zsha2 status
zsha2 db-status
ceph -s
- 在两台管理节点上分别备份数据库:
zstack-ctl dump_mysql --file-name zstack-db-backup-master (主节点)
zstack-ctl dump_mysql --file-name zstack-db-backup-slave (备节点)
- 在两台管理节点上停止 zsha2 服务:
zsha2 stop-node
- 在当前持有 VIP 的节点上执行数据库同步:
zsha2 db-sync -p '<zstack-db-password>'
- 检查数据库状态,确认备节点数据库已恢复正常,否则请停止操作:
zsha2 db-status
- 切换 VIP 到另一台节点:
zsha2 demote
- 在原备节点(此时已升为源端)上再次执行数据库同步:
zsha2 db-sync -p '<zstack-db-password>'
- 再次检查数据库同步状态:
zsha2 db-status
- 重启两台节点上的 zsha2:
zsha2 start-node
- 验证 HA 服务、数据库同步和 Ceph 状态,如果状态都健康并在 UI 重新启用全局 HA:
zsha2 db-status
zsha2 status
ceph -s
- 升级前再次执行数据库备份:
zstack-ctl dump_mysql --file-name zstack-db-backup-master-preupgrade (主节点)
zstack-ctl dump_mysql --file-name zstack-db-backup-slave-preupgrade (备节点)
- 查看当前 HA 套件版本,并在 VIP 节点上解压新压缩包:
zsha2 version
tar -zxvf Multinode-HA-Suite-zsha2_<version>.tar.gz
- 赋权:
chmod +X zsha2 zstack-hamon
- 执行 HA 升级:
./zsha2 upgrade-ha -gencfg=true
- 验证升级后的版本:
zsha2 version
验证方法
- 执行
zsha2 status显示 HA 状态健康,其中一台节点标记为 VIP=yes,另一台为 standby。 - 执行
zsha2 db-status显示备节点同步正常。 - 执行
ceph -s确认返回 HEALTH_OK。 - 执行重新启用全局 HA 后,云主机负载和平台数据持续可访问。

图 2:重新启用全局高可用并确认管理节点状态正常(红框标出)
- 执行
zsha2 version反映新 HA 套件版本。
原因说明
两台管理节点的MariaDB数据库已发生数据偏离,导致 HA 状态异常,必须通过底层手动同步恢复一致后再升级 HA 套件本身。
风险与回滚
- 风险:手工数据库同步和 HA 升级会触及管理面;一旦失败,可能导致两台管理节点都无法管理平台。
- 回滚:使用操作前的
zstack-ctl dump_mysql备份以及已准备的原始版本 ISO 进行回退。
注意事项
本流程需在双管理节点 HA 部署环境上执行。操作期间管理平面会短暂不可用,云平台将触发故障转移。请在客户批准的维护窗口内执行,并在宣布成功前确认故障转移与服务恢复干净无误。
