名称解释:
l KFS:Kingbase Flysync的缩写,是金仓自主研发的、能够在异构数据平台间实现实时、增量数据同步的产品
l CDC:即Changed Data Capture,增量数据获取
一、安装前准备
1.1 软件环境要求
KFS支持在CentOS 6.X、CentOS 7.X、Kylin 4.0、普华5.0、UOS 20、凝思6.0、湖南麒麟3.x、专用机海光CPU +中科方德OS等64位发行版本上安装部署。
Kingbase Flysync支持的DB2版本为: V9.X、V10.X、V11.X
1.2 数据库开启归档日志
以sample数据库为例(现场部署时替换为实际数据库名称)
l 使用管理用户db2inst1连接sample
db2 connect to sample |
l 检查是否开启归档日志
db2 get db cfg for sample | grep -i LOGARCHMETH |


图1-1 数据库归档查询结果
如果LOGARCHMETH1为OFF表示没开启归档日志,则按照文档进行后续操作;如果LOGARCHMETH1为TRUE表示归档已经开启,则可以跳过此章节的后续操作
l 停止应用连接
查看sample数据库的连接情况
db2 list application | grep sample |


图1-2 数据库连接查询结果
停止此数据库的连接,下面的id换成上面查询到的结果
db2 "force application (13169)" db2 "force application (13153)" |
l 开启日志归档(下面以本地归档目录为例)
# 创建归档日志目录(可以按照实际规划调整)
mkdir -p /home/db2inst1/archive_sample/archivelog1 |
#开启归档
db2 update db cfg for sample using logarchmeth1 DISK:/home/db2inst1/archive_sample/archivelog1 |
l 做一次脱机备份
db2 backup db sample to /home/db2inst1/archive_sample |
1.3 新增用户并赋权
l 新增用户
KFS部署之前,需要建立独立的运行帐号,此时需要在root用户下操作:
[root@DB2 ~]# useradd -d /home/flysync flysync [root@DB2 ~]# passwd flysync |
l 赋予DB2数据库的DBA权限
使用管理用户db2inst1连接到待同步数据库(例:sample)授权
db2 connect to sample |
授予管理员权限:
db2 grant dbadm on database to user flysync |
退出连接
db2 terminate |
1.4安装包准备
1、准备需要的KFS数据同步软件安装程序(此文档中以如下版本作示例:KingbaseFlySync-V002R002C004B20230216-replicator.tar.gz),将其上传到服务器的对应用户(1.3章节中新增的flysync用户)下。
2、解压安装包:
tar –zxf KingbaseFlySync-V002R002C004B20230216-replicator.tar.gz –C ~flysync
3、将安装包flysync-replicator/extractors/db2-cdc目录下的所有sql文件拷贝到DB2的管理员用户(db2inst1)下,此处假定为 ~db2inst1/tmpSQL/ 目录


图1-3 部署SQL文件列表
二、配置安装
2.1 部署UDF文件
l 连接数据库
使用上面创建的同步用户flysync连接到待同步数据库(例:sample)
db2 connect to sample user flysync using passxxx |
l 上传UDF jar和注册UDF
上传下面的asncdc.jar到~db2inst1/tmpSQL/目录下
注意:不同DB2版本使用的asncdc.jar不同
V11使用的UDF jar

V10使用的UDF jar

V9使用的UDF jar

安装UDF JAR
db2 "CALL SQLJ.INSTALL_JAR('file:/home/db2inst1/tmpSQL/asncdc.jar', asncdcjar)" |
l 注册服务控制UDF
db2 -tmf /home/db2inst1/tmpSQL/asncdc_UDF.sql |
l 创建asn控制表
注意:不同版本执行的sql脚本不同
# v11 版本 db2 –tmf /home/db2inst1/tmpSQL/asncdctables_v11.sql # v10 版本 db2 -tmf /home/db2inst1/tmpSQL/asncdctables_v10.sql # v9 版本 db2 -tmf /home/db2inst1/tmpSQL/asncdctables_v9.sql |
l 注册新增删除UDF
注意:不同版本执行的sql脚本不同
# v11和v10 版本 db2 -tmf /home/db2inst1/tmpSQL/asncdcaddremove_v10-v11.sql # v9 版本 db2 -tmf /home/db2inst1/tmpSQL/asncdcaddremove_v9.sql |
2.2 CDC配置文件
2.2.1 配置文件列表


图 2-1 配置文件列表
脚本 | 作用 | 参数说明 |
setupCDC.sh | 读取flysync.tables里配置的表,然后配置CDC | -h 查看使用说明 -c <path> :path表示setupCDC.conf的全路径,如果不指定-c参数,则默认使用当前路径下的 -cs:生成修改CAPTURE CHANGES属性的sql文件 |
cleanCDC.sh | 清理db2 CDC的配置 | -h 查看使用说明 -c <path> :path表示setupCDC.conf的全路径,如果不指定-c参数,则默认使用当前路径下的 -a 使用此参数将清理db2所有CDC配置(包含安装的控制表和UDF jar),如果不指定此参数,则默认只清理flysync.tables里配置的CDC表 |
setupCDC.conf | 配置DB2相关信息 | |
flysync.tables | 部署时使用配置表 |
2.2.2 配置文件flysync.tables


图 2-2 flysync.tables文件
flysync.tables 文件里边列出需要同步的表
flysync.tables 文件的格式为:
schemaName<TAB>tableName
注1:<tab>表示TAB键
注2:模式名、表名大小写需要和数据库中保持一致
2.2.4 配置文件setupCDC.conf


图2-3 setupCDC.conf文件
配置参数解释如下:
参数名称 | 含义 |
service | 服务名称,由用户自行指定(注意:需要和和后面同步工具部署时的服务名称保持一致 |
db_host | db2所在的机器ip或域名 |
db_port | db2的端口 |
db_name | 要同步的表所在的数据库 |
sys_user | 系统用户名 |
sys_pass | 系统用户名密码 |
source_user | 同步的用户名称(需手动创建) |
source_password | 同步的用户密码 |
sqllib_Path | db2 sqllib目录位置的全路径 |
commit_interval | 变更数据提交到CD表中的间隔时间 |
auto_setup | true: DBA权限部署/清理时自动启停asncap服务 |
2.3 部署CDC
2.3.1 配置CAPTURE CHANGES属性
配置flysync.tables和setupCDC.conf文件后,生成ALTER_CAPTURE_CHANGES.sql
./setupCDC.sh -cs |
按照2.1节将ALTER_CAPTURE_CHANGES.sql上传到db2服务器~db2inst1/tmpSQL/,并使用具有dbadm权限的用户执行
db2 –tmf /home/db2inst1/tmpSQL/ALTER_CAPTURE_CHANGES.sql |
2.3.2安装CDC
注:此章节的所有操作,都需要在KingbaseFlySync-V002R002C004B20230216-replicator.tar.gz的解压目录的flysync-replicator/extractors/db2-cdc目录下执行
配置好flysync.tables和setupCDC.conf文件后,执行setupCDC.sh文件:


图 2-4 安装CDC
安装成功后,可以通过ps命令查看相关进程:


图2-5 捕获进程查看结果
2.3.2清理CDC
执行cleanCDC.sh可以清除相关CDC表配置:


图 2-6 清理CDC(仅CDC表)
执行cleanCDC.sh -a 可以清除所有CDC配置:


图 2-7 清理CDC(所有CDC配置)
三、验证安装
配置完成CDC后,DB2将会捕获相关的数据变更,可以通过插入/更新/删除相关表的数据来进行验证。
假设create table flysync.testa(id int,a int)表已经完成CDC配置
初始时无数据:


图 3-1 初始状态
INSERT数据:


图 3-2 解析INSERT操作
UPDATE数据:


图 3-3 解析UPDATE操作
DELETE数据:


图 3-4 解析DELETE操作
四、总结
1. 此部署方案的前提是用户可以提供DBA权限,当用户不能提供DBA权限时,请参考最小权限部署的相关文档。
2. 实际安装部署时,对应的用户、数据库名称、相关文件路径需要根据实际情况修改




asncdc.zip
asncdc(1).zip
asncdc(2).zip