GaussDB for DWS中GTM组件对sequence管理

举报
谈笑鸿儒 发表于 2020/07/01 22:39:38 2020/07/01
【摘要】 摘要GTM作为MPPDB集群服务重要组件,主要负责分发xid和snapshot以及sequence,保证系统中全局事务的一致性。序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性


1.  GTM 简要概述

GTM(Global Transaction Manager)名为全局事务管理器,负责生成和维护全局事务ID、事务快照、Sequence等需要全局唯一的信息。GTM分为主GTM和备GTM。正常情况下,只由主GTM提供全局事务管理服务。当主GTM发生故障的情况下,备GTM会主动升为主GTM提供服务。GTM是被动接受连接的,通常只有CN会主动连接GTM,DN在autovaccumwork时连接GTM。

 

GTM在整个高可用架构的关系如图所示:

 

2. Sequence简要概述

在DWS里序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则单调自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。

sequence是一个存放等差数列的特殊表,该表受DBMS控制。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。创建序列后,在表中使用序列的nextval()函数和generate_series(1,N)函数对表插入数据。

sequence操作样例:

 


3. GTMsequence管理

GTM端维护全局唯一的sequence的ID,新序列值的产生是靠GTM维护的,默认情况下,每申请一个序列值都要向GTM发送一次申请,GTM在当前值的基础上加上步长值作为产生的新值返回给调用者。 

n  GTM端创建create sequence的过程:

1.  接受SQL命令的CN从GTM申请UUID;

2.  GTM返回一个UUID;

3.  CN将拿到的UUID与用户创建的sequenceName绑定;

4.  CN将绑定关系下发给其他节点上;

5.  CN将UUID 和sequence的startID发送到GTM端,在GTM行进行永久保存。

 


 


n  GTM端删除sequence的过程:

CN向GTM发送UUID和database用来执行删除sequence或删除数据库的命令



 

4.  GTMHA机制中对sequence的管理:

n  sequence同步:

sequence每次同步递增20000*inc*cache,在DISK中存储在gtm.sequence。

在集群中有以下几处涉及sequence,CN,DN,GTM(主备内存),DISK(GTM下的数据区域),ETCD。而存储GTM备份值的地方只有四处:主GTM,备GTM,DISK,ETCD,当GTM出现故障时一般可通过备份值来恢复,而在极端情况下, sequence可以通过CN和DN上的写入值来恢复。

n  sequence恢复:

主备从集群,GTM强依赖DISK。DISK中存储的sequence数据默认是可靠的。每当GTM故障重启,优先从DISK来恢复sequence数据;

一主多备集群,GTM强依赖ETCD,ETCD中的sequence数据默认是可靠的。每当GTM重启,优先从ETCD来恢复sequence数据。



 

 

更多精彩内容,请关注华为云开发者社区论坛:https://bbs.huaweicloud.com/forum/forum-598-1.html 及微信公众号“华为云AI”


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。