案例说明:
KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现“two master”节点的故障,启动集群失败;通过手工sys_ctl启动各节点数据库服务后,并手工重启kingbasecluster(restartcluster.sh)服务,集群运行正常。故障现象如下图所示:
手工启动数据库服务流复制正常:
手工启动kingbasecluster服务集群状态正常:
适用版本:
KingbaseES V8R3
一、问题分析:
1、分析kingbase_monitor.sh执行过程
执行:sh -x kingbase_monitor.sh start
Tips:
集群在启动时,通过读取recovery.conf文件判断主备库,对于主库没有recovery.conf(recovery.done)文件,而对于备库在data目录下有recovery.conf文件,可以通过读取到文件信息后,判断节点是否是备库。
---如上图所示,在集群启动过程中通过查询节点recovery.conf文件获取判断主备库状态信息(主库无recovery.conf),在连接227节点获取到主库的primary_conninfo信息时,返回信息为空,故判断227节点也是master节点。
如下图所示,是正常启动的返回信息:
2、远程执行ssh连接227节点查看recovery.conf文件信息
---如上图所示,返回的结果为空。
正常查询结果:(返回primary_conninfo信息)
3、检查227节点recovery.conf文件
检查发现227节点的data目录存储位置有问题。
三、问题解决
因为227节点是刚刚重做的备节点,data目录原来做了软链接,重做后忘记建立链接,导致227节点的data目录访问错误,重新建立软连接后,集群正常,问题解决。