executor镜像概述
Executor镜像机制概述¶
当SeaboxMPP数据库高可用性被启用时,有两种类型的executor:primary executor和mirror executor。每个主executor都有一个对应的镜像executor。主executor从coordinator接收请求来对该executor的数据库做更改并将这些更改通过发送日志的方式复制到对应的镜像executor。 如果主executor变成不可用,镜像executor会切换为主executor,不可用的主executor会切换为镜像executor。故障出现时正在进行的事务会回滚。接下来集群监控服务会恢复故障的executor,并允许镜像executor与当前主executor进行同步,数据同步完成后,交换主executor和镜像executor的角色,与集群拓扑信息中记录的初始角色保持一致。
如果executor镜像未启用,当出现executor实例故障时,SeaboxMPP数据库系统会停止对外服务。管理员必须手工恢复所有失败的executor实例然后才能重新启动数据库。
如果现有系统已经启用了executor镜像,当主executor实例正在生成一个快照时,主executor实例继续为用户提供服务。
当主executor快照完成并向镜像executor实例部署时,主executor的变化也会被记录。当快照完全部署到镜像executor后,镜像executor会同步这些变化并采用WAL流复制的方式与主executor保持一致。SeaboxMPP数据库的WAL复制使用walsender
和walreceiver
复制进程。walsender
进程是主executor的进程。walreceiver
进程是镜像executor的进程。
当数据库变化出现时,日志捕获到该变化然后将变化流向镜像executor,以保证镜像与其对应的主executor一致。在WAL复制期间,数据库变化在被应用之前先写入日志中,以确保任何正在处理的数据的完整性。
当SeaboxMPP数据库检测到主executor故障时,WAL复制进程停止,镜像executor自动接管成为活动主executor。如果主executor活动时,镜像executor故障或变得不可访问,主executor会追踪数据库变化并记录在日志中,当镜像恢复后,将保存的日志应用到镜像节点。有关executor故障检测和故障处理的详细信息,请见检测故障的executor。
SeaboxMPP数据库系统表包含镜像和复制的详细信息。
- 系统表
sc_node_configuration
包含主executor、镜像executor、所有 coordinator实例的当前配置和 状态信息。
镜像配置
镜像executor实例可以根据配置的不同在集群主机中按不同的方式分布。在对SeaboxMPP集群进行部署时,可以对executor的部署方式进行配置,SeaboxMPP集群的配置文件seabox-site.yml文件中给出了配置的格式,用户可以选择不同的镜像executor部署方式。
以分组打散的方式镜像 这是SeaboxMPP集群默认的镜像分布方式。首先将集群的主机进行分组,然后将每一个主executor的镜像分散到组内的多台主机上,当组内的某台主机发生故障时,保证每一个机器上至多只有一个镜像提升为主executor,避免其他的主机负载压力骤增。此分布方式建议每个主机组内的主机数量多于每台主机上executor的数量。下图显示了如何以分组打散的方式配置executor镜像。
以分组的方式镜像 该方式每台主机的主executor对应的镜像都整体放在另一台主机上,如果有一台主机故障,另外一台接管该主机服务的镜像所在的机器的活动executor数量便会翻倍。
下图显示了以分组的方式配置executor镜像。