金仓数据库主备切换故障解析,一次由相对路径引发的失败与切换流程解读
一、故障现象:主备切换遭遇路径陷阱
某环境数据库集群执行手动切换时,在备节点执行./repmgr standby switchover
命令后出现异常报错:
查看当前集群状态
./repmgr cluster show
集群状态检查显示主备节点均处于正常运行状态,但切换时系统提示数据目录异常。
在备节点执行
./repmgr standby switchover
出现如下报错
二、根因分析:相对路径引发的连锁反应
根据提示执行检查命令
./repmgr node check --data-directory-config
检查数据库目录,这里发现数据库启动使用了相对路径启动
看来repmgr在切换时会严格校验路径一致性,相对路径回导致路径解析偏差
三、解决方案
# 暂停集群管理服务
./repmgr service pause# 安全停止异常实例(使用相对路径)
./sys_ctl -D ../data/ stop# 标准化启动(强制使用绝对路径)
./sys_ctl -D /home/cli/cluster/install/kingbase/data start# 恢复集群管理
./repmgr service unpause
然后执行主备切换就正常了
./repmgr standby switchover
切换后的状态检查
三、金仓数据库手动主备切换流程
金仓数据库使用repmgr standby switchover命令对主备集群执行手动切换,该命令在备节点执行,把主节点降级为备库,把当前备节点提升为主库。
以下是总结的部分切换流程
-
前置健康检查
- 验证主备节点连通性,集群状态
- 检查主备数据同步情况,日志归档状态
-
HA服务暂停
repmgr service pause # 暂停自动故障转移
- 停止repmgr守护进程
- 锁定集群状态变更
-
数据一致性保障
- 主节点执行CHECKPOINT强制刷盘
-
主节点优雅下线
sys_ctl -D $DATA stop -m fast -W
- 终止客户端连接
- 完成未提交事务回滚
-
备节点升主操作
- vip判断及加载(若有)
- 执行升主
sys_ctl -D $DATA promote
- HA服务恢复
repmgr service pause # 暂停自动故障转移
- 停止repmgr守护进程
- 锁定集群状态变更