coordinator高可用概述
coordinator多活架构概述¶
SeaboxMPP建议部署多个coordinator实例,这些coordinator地位是完全平等的,用户连接任意一个coordinator都可以对集群进行增删改查等业务操作,多个coordinator也实现了高可用的部署,即使某个coordinator发生故障,也可以确保用户的业务不中断。
coordinator中仅存储了集群的元数据信息,用户的数据存储在各个executor中,因此数据库业务的执行分为以下两种情况:
- DML操作经过coordinator解析后,发送到每个executor上去执行,不需要跟其他的coordinator发生关系。
- DDL操作、数据库控制语句等,需要同步发送给所有在线的coordinator,当所有在线的coordinator都成功后,才认为执行成功
coordinator实例有u
(在线)、d
(掉线)和b
(损坏)三种状态,由集群监控服务来维护coordinator实例的状态。当coordinator发生故障时,其status
首先变为d
,如果超过设定的时间(默认120s)还未启动,则其status
将变为b
,此时将由集群自愈功能对其进行恢复。以下是SeaboxMPP数据库如何处理coordinator故障
-
如果coordinator的
status
为b
,集群监控服务将会向其发送启动命令,尝试启动coordinator,如果coordinator启动成功了,则coordinator的status
修改为u
,继续对外提供服务。 -
如果在设定的时间(默认120s)内,coordinator没有启动成功,则其
status
变为b
,集群自愈功能将会对其进行恢复,调用basebackup,从依然在线的coordinator拷贝数据,对故障的coordinator进行恢复,恢复完成后,启动故障的coordinator,再将其status
修改为u
,继续对外提供服务。如果status
为b
的coordinator所在的主机掉线了,则不会对其进行恢复,直到主机上线后,再对其进行恢复。
coordinator相关信息查询方法:
- 使用
seabox status -a -m coordinator
可以查询coordinator所在的主机、端口、状态、数据目录等全部配置信息 - 系统表
sc_node_configuration
包含主executor、镜像executor、所有coordinator实例的当前配置以及状态信息。