当前位置: 首页 > news >正文

gbase8s cdc协议解析

什么是cdc

cdc全称是Change Data Capture,是一种捕获增量数据的技术统称,目前主要应用在捕获数据库数据变更的技术。

如何使用

不同数据库应用厂商实现方式也不尽相同,如下提供gbase8s数据库使用cdc基本步骤

1 以gbasedbt用户  创建syscdcv1系统库

cd $GBASEDBTDIR/etc

dbaccess - syscdcv1.sql

2 运行 cdc_opensess函数,该函数返回一个会话标识

3 运行cdc_set_fullrowlogging函数,该函数对需要捕获的表开启整行日志记录

4 运行cdc_startcapture 函数指定要捕获哪些数据

5 运行cdc_activatesess 函数开启捕获进程,捕获到的数据则会返回至应用程序

6 解析数据

7 运行cdc_endcapture()函数停止捕获

8 运行cdc_set_fullrowlogging() 函数解除整行日志

9 运行cdc_closesess()函数关闭捕获会话

协议解析,如下测试程序完成上述的准备后开始进行数据捕获

第一行协议整理如下

00000024    4字节 cdc 记录标题的字节数
0000001D    4字节 
00000042    4字节 分包方案号,固定为66
000000C8    4字节 cdc记录号 代表 具体的操作,存储于cdc 系统库下的syscdcrectypes 表 主要包括插入、删除、修改、事务开始、事务提交、truncate等等
            c8对应的操作为CDC_REC_TABSCHEM 描述信息 
0000006F    4字节 捕获表的唯一标识,在调用接口的时候指定
00000000    4字节 必须为0
00000004    4字节 表中固定长度列大小 此次测试为create table t1(c1 int,c2 varchar(10)) 
00000001    4字节 固定长度列数量
00000001    4 字节 可变长度列数量

63312069    不定字节 表的描述信息
6E746567
65722C20
63322076
61726368
61722832
302C3029
00000000

第二列

00000018     4字节 cdc 记录标题的字节数
00000000     4字节  有效内容长度
00000042     4字节 分包方案号,固定为66
000000C9     4字节 cdc记录号  c9 对应为超时 CDC_REC_TIMEOUT ,即没有新的数据变化 
00000000     8字节 检索数据序号 因没有新数据 为0
00000000
                     后方的数据为上次buffer 中的脏数据
00000004
00000001
00000001

63312069
6E746567
65722C20
63322076
61726368
61722832
302C3029
00000000

第三列 同第二列 超时操作

此时在数据库后台执行 insert into t1 values(15,'abcabcabc');

第四列

 

00000028           4字节 cdc 记录标题的字节数
00000000           4字节 有效内容长度
00000042           4字节 分包方案号,固定为66
00000001           4字节 cdc记录号 01 对应 CDC_REC_BEGINTX 即 事务开始
0000000B01746018   8字节 记录的需要
00000027           4字节 事务标识
0000000067DFE90F   8字节 事务开始时间 格式为时间戳
000007D5           操作系统用户标识 gbase8s数据库 管理员用户为 gbasedbt 该用户为操作系统用户 7D5 --> 2005 对应操作系统该用户的id

6E746567           后方的数据为上次buffer 中的脏数据
65722C20
63322076
61726368
61722832
302C3029

 第五列

00000028          4字节 cdc 记录标题的字节数
0000000F          4字节 有效内容长度
00000042          4字节 分包方案号,固定为66
00000028          4字节 cdc记录号 28 对应 CDC_REC_INSERT  即插入数据
0000000B01746050  8字节 与insert相关的序号
00000027          4字节 事务标识
0000006F          4字节 捕获表的唯一标识,在调用接口的时候指定
00000000          4字节 保留

0B000000          4字节 暂时未知,猜测标识该列的数据类型
0000000F          4字节 int 列的值 本次测试为 15
0009              2 字节 ,标识可变列的数据长度
616263616263616263 不定长度 ,可变列的值  insert into t1 values(15,'abcabcabc');

68617228           后方的数据为上次buffer 中的脏数据
32302C3029

 第六列

00000024          4字节 cdc 记录标题的字节数
00000000          4字节 有效内容长度
00000042          4字节 分包方案号,固定为66
00000002          4字节 cdc记录号 02 对应 CDC_REC_BEGINTX  即提交事务

0000000B017460A0  8字节 记录的序号
00000027          4字节 事务标识
0000000067DFE90F  8字节 事务提交时间 格式为时间戳

0B000000          后方的数据为上次buffer 中的脏数据
0000000F
00096162
63616263
61626368
61722832
302C3029

以上为一个简单的 数据插入的捕获流程

开启捕获时

先进行CDC_REC_TABSCHEM 操作,该操作主要返回了一些信息,比如 捕获列的信息,数据类型为变长或者固定长度等

然后进入CDC_REC_BEGINTX 操作 事务开启,记录了事务号,开始时间等

随后就是一些数据的操作 本次测试为 CDC_REC_INSERT

最后进入 CDC_REC_BEGINTX 提价本次事务

了解cdc的基本协议以及操作后,可以实现一些异构数据库的数据实时流转

更多cdc 相关材料,请联系gbase官方技术支持

相关文章:

  • 多源最短路径算法(竞赛)
  • 第45章:配置更新与应用热重载策略
  • VMware上对CentOS7虚拟机进行磁盘扩容、缩容
  • Uthana,AI 3D角色动画生成平台
  • Python第六章08:元组操作练习题
  • C++ 学习笔记(四)—— 类和对象
  • 【计算机操作系统】深入剖析操作系统中的存储器管理:从基础到高级
  • 如何高效参与 GitHub 知名项目开发并成为核心贡献者
  • Ubuntu Debian 系统下挂载 Samba 共享目录的完整指南
  • 用java写一个简易的本地聊天室
  • 使用vscode搭建pywebview集成vue项目示例
  • bonding技术
  • span与span之间的空白如何解决?
  • Shopify Checkout UI Extensions
  • 电阻的阻值识别
  • 数据结构5(初):排序
  • 【跟着灵神刷力扣】定长滑动窗口
  • 【动态规划】相关复习
  • python数据增强和转换
  • linux 设置tomcat开机自启动
  • 总奖金池百万!澎湃与七猫非虚构写作与现实题材征文大赛征稿启动
  • Offer触手可及,2025上海社会组织联合招聘专场活动正寻找发光的你
  • 马上评丨岂能为流量拿自己的生命开玩笑
  • 专访|导演刘江:给谍战题材注入现实主义的魂
  • 欧元区财长会讨论国际形势及应对美国关税政策
  • 江西吉水通报一男子拒服兵役:不得考公,两年内经商、升学等受限