Coordinator故障处理
Coordinator异常恢复¶
SeaboxMPP数据库系统启用coordinator多活功能后,某个coordinator故障,不影响集群的整体可用性。coordinator故障的可能有如下原因:
-
由于网络或者硬件失效,导致coordinator主机不可用
-
coordinator实例没有运行
-
coordinator实例的数据目录损坏或者丢失
当发现coordinator实例异常后,SeaboxMPP会自动对coordinator进行恢复,不需要人工干预,具体的恢复步骤如下:
-
将coordinator实例的
status
设置为d
(掉线)- 此时SeaboxMPP集群的DDL和集群控制命令将会被阻塞
-
向此coordinator实例发送启动命令,尝试重新启动coordinator
-
如果coordinator已经启动,则coordinator恢复成功
-
如果在设定的时间(默认120s)内,无法启动coordinator,则将其
status
设置为b
(损坏)- 此时SeaboxMPP集群的DDL和集群控制命令将会正常执行
-
将SeaboxMPP集群进入只读状态
-
调用
sd_basebackup
,从依然在线的coordinator实例中拷贝数据,来恢复故障的coordinator实例 -
重新启动已经修复的coordinator实例,如果启动失败,则转到第4步继续执行
-
已修复的coordinator启动成功后,将此coordinator的
status
设置为u
(在线) -
SeaboxMPP集群退出只读状态,恢复为正常业务状态
-
coordinator实例恢复完成
注意
-
coordinator实例进行自动恢复的前提是,SeaboxMPP数据库集群中依然有在线的coordinator实例,如果集群中已经没有在线的coordinator实例,则无法进行自动恢复
-
coordinator实例进行恢复前,需要将集群设置为只读状态,如果不能接受集群进入只读状态,可以禁止coordinator的自动恢复
seabox config -c monitor_enable_coor_basebackup -v 0
- coordinator实例发生故障,
status
为d
(掉线)到b
(损坏)之间的这段时间,SeaboxMPP集群的DDL操作会被阻塞,无法进行。默认的设定时间为120s,可以根据实际业务需求对此时间进行修改。例如,将此设定时间修改为30s:
seabox config -c monitor_coor_bad_time -v 30