GaussDB for DWS高可用之CN&GTM组件高可用介绍

网友投稿 1184 2022-05-28

前言

本文主要内容分两块内容,1. 高可用的演进路线 2. 简单介绍各个内核组件的高可用方案

GaussDB for DWS 的内核侧组件为DN, CN, GTM,内核侧组件是通过集群管理组件CM server、CM agent 来进行管理的。内核组件和集群管理组件共同组成了GaussDB for DWS 集群。组件的逻辑关系如下图:

演进路线

GaussDB For DWS 源于Gauss 200, 经过若干版本的演进,形成当前高可用能力,从最初pgxc组件间没有任何高可用能力,到现在完整的高可用能力。后续高可用的能力还是围绕单点故障快速恢复,业务不中断进行构筑。

内核高可用

DN 高可用

DN 的高可用是基于主备从的架构进行构筑,详细的原理请参见之前技术博文,本文不展开描述。

GaussDB for DWS 高可用之数据复制

GaussDB for DWS 高可用之主备从HA技术

GaussDB for DWS 高可用之备机重建

DN 高可用后续会增加  switchover/failover/catchup原理及的介绍。

CN 高可用

GaussDB for DWS高可用之CN&GTM组件高可用介绍

在 DWS 集群中通常会部署多个CN,每个CN都可读写。如果一个CN故障,那么客户端可以使用其它CN。由于CN只存储元信息数据(即每张用户表数据分布在哪几个DN),因此只有DDL操作时才涉及到CN存储数据,DML时CN并不需要写数据。

CN 的数据同步

在DDL操作时,接收业务的CN会把该SQL发送到所有其他CN与所有DN,通过两阶段提交来保证各个CN的数据一致性。这里也有一个场景:即当一个CN故障时,那么集群便无法操作DDL,此时CM已经提供了CN的自动剔除和加回功能,可以方便的处理CN的故障。

CN 重建方式

CN 的修复是通过使用一个正常的CN重建故障CN, 具体技术是用CN build 的方式使用其它CN重建出CN, 这个也是充分利用CN间互为多写互为备机的机制。在较老版本中使用gs_dump工具来实现 CN 的重建。

CN 的状态转换

CN的状态分为 4 种如下图:Normal: 是正常提供服务,Starting: 实例启动过程,Down: 停止,Deleted: 被剔除状态。 在集群中CN的操作都是由CM agent来完成的,基本上不需要人工介入。

GTM 高可用

在DWS集群中,GTM的作用是产生全局唯一的事务号及sequence id, 在DWS集群中GTM主备两个实例,主GTM提供服务和给备GTM同步信息,备GTM负责在主GTM故障时,升主继续提供服务。主备GTM的数据都需要在本地落盘,其中主GTM在达到阈值后写本地数据并同时保证在备GTM中也落盘,这样保证备GTM升主后不会分配重复的数据。

GTM 数据同步

主 GTM  在xid、sequence 达到阈值时刷新本地和备GTM的数据,在上一次阈值是写入数据后的第一次分配的xid、sequence 的xid的基础上 + 一个值(20w) 作为一个阈值,在 xid、sequnce分配到这个点时,触发写本地和同步备GTM,此时备GTM接收到消息后创建一个服务线程,并将事务xid写入本地文件,回复消息,主机的一次同步便完成。GTM在内存中xid每加20w时会向备机同步一次。如果GTM主机永久故障,GTM备机升主后,只需要重新初始化一个GTM实例出来然后和主机同步xid即可。

GTM 状态转换

GTM 的角色与 DN 类似,也是有primary, standby, pending 三种,并且通过外部命令switchover/failover/notify进行角色间的转换。当然这种转换是由cm层自动完成,基本上不需要人工介入

数据仓库服务 GaussDB(DWS) 数据复制服务 DRS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB(DWS)实践系列-数据仓库自动化清理功能实现
下一篇:GaussDB(DWS)大集群集群运维技巧
相关文章