关于Greenplum数据库中的冗余和故障切换
本主题概述了Greenplum数据库的高可用性功能。
您可以通过对组件进行镜像,来部署无单点故障的Greenplum数据库。以下各节描述了对Greenplum系统主要组件进行镜像的策略。有关Greenplum高可用性功能的更详细概述,请参阅 Greenplum数据库高可用性概述。
重要提示:如果对于Greenplum数据库集群而言,数据丢失是不可接受的,则建议使用Greenplum master镜像和segment镜像。如果未启用镜像,则Greenplum仅存储数据的一个副本,因此,在硬件故障的情况下,底层的存储介质为数据可用性和正确性提供了唯一保证。
Kubernetes能够从pod和主机故障中快速恢复,并且Kubernetes存储服务为底层数据提供了高水平的可用性。此外,虚拟化环境使得难以确保Greenplum镜像解决方案所需的反亲和力保证。由于这些原因,Greenplum for Kubernetes完全支持无镜像部署。其他的部署环境,除非同时启用了Greenplum master镜像和segment镜像,否则通常不支持将其用于生产。
关于segment镜像
部署Greenplum数据库系统时,可以配置的segment实例的镜像。如果主segment不可用,则segment的镜像允许数据库查询转移到备份segment。segment镜像通过事务日志的复制进程保持最新状态,该进程能在主实例和镜像实例之间同步数据。强烈建议在生产系统中启用镜像,并且是Pivotal支持所必须的。
作为最佳实践,辅助(镜像)segment实例必须始终驻留在与其主segment实例不同的主机上,以防止单个主机发生故障。在虚拟化环境中,辅助(镜像)segment必须始终位于与主segment不同的存储系统上。可以在配置中将镜像segment分布在集群中的其余主机上,目的是当主机或多个主segment失效时,这样可最大程度地提高可用性,或最大程度地减少性能下降。
初始化或扩展Greenplum系统时,可以使用两种标准的镜像配置。默认配置称为组镜像,它将一台主机上的主segment的所有镜像放置在集群中的另一台主机上。另外一个标准配置,称为散布镜像,可以通过命令行选项来选择它。散布镜像将每台主机的镜像散布在其余的主机上,它要求集群中的主机数量,要大于每台主机上的主segment数量。
图1显示了配置了扩展镜像时,表数据在segment之间如何分布。
![](https://i-blog.csdnimg.cn/blog_migrate/56a4b6cb0bcaf476c3d2166b0c9619f5.png)
在Greenplum数据库系统中启用segment镜像后,如果主segment 实例不可用,系统将自动故障切换到镜像segment实例。当一个segment实例或主机发生故障,只要其余活动的segment实例上的所有数据都可用,则Greenplum数据库系统就可以保持运行。
如果master无法连接到segment实例,它会在Greenplum数据库系统目录中将该segment实例标记为宕机,并且把镜像segment提升起来作为替代。失效的segment实例将保持无法操作的状态,直到管理员采取措施使该segment恢复联机。管理员可以在系统启动并运行时恢复失效的segment。恢复过程仅复制该segment无法操作期间错过的更改。
如果您没有启用镜像,则当segment实例变为无效时,系统将自动关闭。您必须恢复所有失效的segment,然后才能继续操作。
关于Master镜像
您还可以选择将Master实例的备份或镜像部署在与主Master不同的主机上。当主master变得不可用时,master的备份(备用Master)充当热备。备用master通过事务日志复制进程保持最新状态,该进程在主master和备用master之间同步数据。
如果主master失效,则日志复制进程将停止,备用master可以在其位置被激活。这种切换不会自动发生,必须由外部触发。激活备用master后,已复制的日志被用来重建最后一次成功提交事务时的master状态。被激活的备用master实际上变成Greenplum数据库master,在master的端口上接受客户端连接(主master和备份master的端口号必须相同)。
由于master不包含任何用户数据,因此只有系统目录表需要在主master和备份master之间进行同步。当这些表被更新后,更改将自动复制到备用master,以确保与主master同步。
![](https://i-blog.csdnimg.cn/blog_migrate/2d4e646f48d304ac89638616bdd2c59f.png)
关于interconnect冗余
Interconnect是指segment之间的进程间通信,以及该通信所依赖的网络基础设施。通过在网络上部署双千兆以太网交换机,以及到Greenplum数据库主机(master和segment)冗余的千兆连接,您可以得到高可用的interconnect。出于性能原因,建议使用10 Gb或更快速的以太网。