KFS支持Gbase8s增量解析调研
关键字:
Kingbase FlySync、Gbase8s、增量解析
Gbase8s数据库环境搭建与CDC配置
- Gbase8s数据库安装与配置
- 南大通用官网下载安装包和数据库连接驱动
- 根据安装手册安装Gbase8s
- 修改sqlhosts.ol_gbasedbt1210文件,设置数据库实例地址和端口
- dbeaver连接测试,链接模块:jdbc:gbasedbt-sqli://10.12.14.128:9088/gbase8s
- CDC环境搭建
- 创建需要进行CDC的数据库,并开启数据库日志开关。
例:create database cdctest in gbasedbt with log;
- 执行 安装目录/etc/syscdcv1.sql初始化CDC系统数据库
例:dbaccess - syscdcv1.sql
- 设置DB_LOCALE环境变量,确保DB_LOCALE值与需要进行CDC的数据库LOCALE值相同
数据库LOCALE值查询:select * from sysmaster:sysdbslocale ;
环境变量设置:编辑安装用户目录下的.bash_profile,添加:export DB_LOCALE=en_US.819
CDC执行流程
1、使用gbasedbt用户连接到syscdcv1数据库;
2、执行cdc_opensess()函数,开启cdc会话,函数会返回一个sessionIDsessionId存在时间?重启后sessinid问题。
例:execute function syscdcv1:cdc_opensess('ol_gbasedbt1210',0,0,1,1,1);
参数说明:service_name:数据库实例名称
sessionID:必须是0
timeout:设置数据捕获等待时间,<0表示不要超时;=0表示没有数据则返回;>0表示在超时之前等待数据的秒数
max_recs:设置每次读取数据返回的CDC记录的最大数目,
major_version:最大API版本,必须设置为1
minor_version:最小API版本,设置为1
3、执行cdc_set_fullrowlogging()函数,开启全列记录日志
例:execute function syscdcv1:cdc_set_fullrowlogging('gbase8s:gbasedbt.cdctest',1);
参数说明:database:owner.table_name,数据库:用户:表
logging:1表示开启,0表示关闭
4、执行cdc_startcapture()函数表示开始进行变更数据捕获
例:execute function syscdcv1:cdc_startcapture(sessionID,0,'gbase8s:gbasedbt.cdctest',cols,user_data);(是否每一张表执行一遍)
参数说明:sessionID,cdc_opensess()函数获取
MBZ:设置为0
database:owner.table_name,数据库:用户:表
cols:设置需要进行数据捕获的列
user_data:用户标识符(验证作用,双向同步标记)
5、执行cdc_activatesess()函数表示从指定日志的指定位置进行数据捕获
例:execute function syscdcv1:cdc_activatesess(sessinId,position)
参数说明:sessionID:会话id
position:指定进行增量捕获的位置
6、进行增量数据捕获,解析record
7、执行cdc_endcapture()函数表示结束数据捕获。
例:execute function syscdcv1:cdc_endcapture(sessionID,0,'gbase8s:gbasedbt.cdctest')
参数说明:sessionID,会话id
MDZ:必须是0
database:owner.table_name,数据库:用户:表
8、再次执行cdc_set_fullrowlogging()函数,设置logging参数为0,关闭全列记录日志
9、执行cdc_closesess()函数,关闭会话
例:execute function syscdcv1:cdc_closesess(sessionID)
参数说明:sessionID,会话id
增量解析支持情况
1、ddl支持情况
支持truncate解析
不支持drop解析-->提示无法删除正在进行同步的表
不支持create语句解析-->create新建表后,必须为每一张表执行cdc_set_fullrowlogging()和cdc_startcapture()才能进行CDC
2、无主键表支持情况(增删改)
支持(cdc_startcapture()函数可以指定开始数据捕获的列,既可以指定主键列也可以指定无主键列)
3、断点续传
支持:通过在cdc_activatesess()函数中指定进行数据捕获的位置进行断点续传position可以为0,也可以为之前捕获会话中返回的CDC记录的序列号(Sequence Number)中
4、日志保存时间
逻辑日志:记录事务行为(insert、update等),采用循环执行的方式,通过设置可以进行自动或连续备份
物理日志:记录数据库数据
5、事务回滚行为
支持
6、类型支持(验证类型细化,表格表现,确定范围)
已验证支持数据类型:
char、smallint、int、float、smallfloat、
decimal、date、datetime、varchar、nchar、
nvarchar、lvarchar、boolean、bigint
参考资料
《GBase 8s V8.8 数据变更捕获(CDC)API_程序员指南》