GaussDB for DWS中GTM组件对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. GTM对sequence管理
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. GTM的HA机制中对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”
- 点赞
- 收藏
- 关注作者
评论(0)