人大金仓KFS支持Gbase8s增量解析调研(二)

KFS支持Gbase8s增量解析调研

关键字:

Kingbase FlySync、Gbase8s、增量解析

Gbase8s数据库CDC中的sessionId

sessionID验证:sessionID与时间无关,取决于连接。

1、在同一次连接中,第一次opensession获取sessionID,如果不进行closesess,再次获取会失败,只有进行closesess关闭session才能再次opensession获取sessionID,且在同一个连接中,每次获取的sessionID相同。

2、在不同的连接中,每次获取的sessionID不同,且每次获取连接,无需在上一次连接中执行closesess,即可执行opensession获取新的session。

CDC执行流程中的关键步骤

  1. cdc_opensession---实例级别的函数,cdc开始时执行一次

2、cdc_cdc_set_fullrowlogging()---表级别的函数,相当于一个开关为每张表打开一次即可,只要不关闭,则下次连接时可以不用执行开启。尽管功能和应用级别不同,但从本质上讲上述两种方法都属于cdc执行的开关函数。

3、cdc_startcapture()表级别的函数,在对每一个要进行cdc的表执行cdc之前必须执行一次,在执行期间可以通过cdc_endcapture()函数结束该表的cdc。在系统出现中断或执行结束后,下次开启对该表的cdc时,必须重新执行一遍,无论在上次cdc执行结束前是否执行了cdc_endcapture()。cdc_startcapture()属于cdc执行的设置函数,表示开始在指定列上进行cdc,如果捕获会话处于打开状态且处于活动状态(已经运行了cdc_activatesess() 函数),则数据捕获将立即在指定表中的指定列上开始。否则,数据捕获将在激活打开捕获会话时开始。

4、cdc_activatesess()函数表示开始执行cdc,用于指定开始进行cdc解析的LSN,可以与cdc_startcapture()交换位置执行。

综上:每次执行cdc进行解析时,需要先执行激活捕获会话,指定开始解析的LSN,并且启动捕获,设置需要捕获的列。

增量解析支持情况RECORD结构

1、CDC记录包含三个部分,分别是:Common header、Record-specific header、Record-content

Common header:所有CDC 记录共用的标题,描述了CDC记录的大小和类型

Header size : 4字节 记录Common header和Record-specific header的总长度

Palyload size: 4字节 记录header后数据的长度

Packet schema: 4字节 记录CDC数据包方案,定义了数据捕获和传输是使用的数据包格式和结构,在syscdcpacketschemes系统表中只存在一种数据包方案66, CDC_PKTSCHEME_LRECBINARY,因此这4个字节一直为00 00 00 66

Record number: 4字节 记录CDC记录号,CDC记录和对应的记录号存储在syscdcrectypes

Record-specific header:描述了不同CDC记录(举例begin、commit、delet)

CDC_REC_BEGINTX:指示事务开始

Sequence number: 8字节 记录当前CDC记录的LSN号

Transaction ID : 4字节 事务ID

start time: 8字节 事务开始时间

User ID: 4字节 开启事务的用户ID

CDC_REC_COMMTX:指示事务已提交

Sequence number: 8字节 记录当前CDC记录的LSN号

Transaction ID : 4字节 事务ID

Commit time: 8字节 事务提交时间

CDC_REC_DELETE:记录CDC删除操作

Sequence number: 8字节 记录当前CDC记录的LSN号

Transaction ID : 4字节 事务ID

User data: 4字节 传递给cdc_startcapture()函数并存储在syscdtabs表中的表的唯一标识

Flags: 4字节 预留位 4、日志保存时间

RECORD种类

CDC_REC_BEGINTX: 事务开始

CDC_REC_COMMTX: 事务提交

CDC_REC_RBTX: 事务回滚

CDC_REC_INSERT: 插入记录

CDC_REC_DELETE: 删除记录

CDC_REC_UPDBEF: 更新前项

CDC_REC_UPDAFT: 更新后项

CDC_REC_DISCARD: 事务无效记录(回滚到保存点等)

CDC_REC_TRUNCATE: truncate

CDC_REC_TABSCHEM: 数据库元信息

CDC_REC_TIMEOUT: 事务超时

CDC_REC_ERROR: 错误记录

参考资料

《GBase 8s V8.8 数据变更捕获(CDC)API_程序员指南》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值