关键字:
KingbaseFlySync、KFS、电科金仓、数据校验、数据比对、精简校验、详细校验、MD5模式、增量校验、命令行校验、全量校验、抽样校验、分片校验、差异数据(表)二次校验、编码差异场景校验、基于快照的存量数据校验、不停机校验
1.功能描述
中电科金仓自研的异构数据同步软件 KFS(Kingbase FlySync)中的数据校验模块支持数据级、表级、模式级、库级的数据一致性校验,支持设置定时任务,周期性的自动校验。
数据校验按照使用方式划分,可分为图形化界面方式的数据校验、命令行方式数据校验。
数据校验按照功能划分,主要包括:精简模式、详细模式、MD5模式、增量校验。其中详细模式可分为:全量校验、抽样校验、分片校验、差异数据(表)二次校验、编码差异场景校验、基于快照的存量数据校验、不停机校验。
周期性自动执行数据校验任务,支持的调度策略有:
仅执行一次:当选择仅执行一次时,需要设置具体在哪天的什么时间执行
每小时执行一次:当选择每小时执行一次时,需要设置具体在每个小时的什么时候执行(几分几秒)
每天执行一次:当选择每天执行一次时,需要设置具体在每天的什么时间执行(几点几分几秒)
每周执行一次:当选择每周执行一次时,需要设置具体在周几的什么时间执行
每月执行一次:当选择每月执行一次时,需要设置具体在几号的什么时间执行
2.使用场景介绍
在数据库迁移、数据汇聚、容灾备份和大数据平台建设等场景下,需要确认两端数据的一致性的场景。
精简模式主要针对场景
仅校验源端、目标端数据条目数是否一致。主要用于大数据量表粗略判断数据是否存在差异的场景。
详细模式
1)全量校验主要针对场景
校验表的全量数据,确认详细数据是否一致。
2)抽样校验主要针对场景
仅校验表中符合条件的数据,如按时间筛选,校验筛选结果的详细数据是否一致
3)分片校验主要针对场景
大表详细校验一次性查询数据量大,可能导致校验异常。通过分片校验,将大表拆分成多片,通过校验各分片数据从而完成大表的校验,可以提升数据校验的效率。
4)差异数据(表)二次校验主要针对场景
在增量数据实时同步期间进行详细数据校验,因为同步延迟导致校验结果有差异,待目标端入库后可以快速的针对差异表或差异数据进行校验,提高数据校验功能的使用体验
5)编码差异场景校验主要针对场景
源端、目标端数据库编码不同,导致排序结果不一致,进而导致校验结果不一致。可以开启内存校验参数配置,会根据差异结果的主键再次校验两端的详细数据。
如 Oracle(gbk)-kes(utf8),相同的数据,校验结果不一致(校验存在差异的数据总和= 源端数据量+目标端数据量),需要开启内存校验
6)基于快照的存量数据校验
ORACLE-Kingbase ES组合,数据迁移完成后,源端不停业务,校验迁移的存量数据一致性。
7)不停机校验
源端不停业务,校验两端数据的一致性
MD5 模式主要针对场景
需要快速校验两端数据一致性的场景,通过校验每行数据的生成的 MD5 摘要值确认两端数据的一致性,提升数据校验的效率
增量校验主要针对场景
仅校验增量数据的场景
3.配置使用方式介绍
参考《Kingbase FlySync 安装部署手册》部署金仓数据同步管理平台(KFSMC)、同步程序(KFS)
图形化方式:
登录KFSMC
点击部署管理-节点管理-新建,添加KFS源端、目标端节点
点击数据校验-任务管理,新建校验任务
点击数据校验-调度管理,新建调度任务,关联校验任务
点击数据校验-调度管理-立即执行,或等待校验任务定时自动调起
点击数据校验-查看结果,查看校验任务执行结果
命令行方式:
登录KFSMC所在服务器
修改配置文件console/conf/table.properties
切换到命令目录console/bin执行cmdcompare命令,参考./cmdcompare help
4.使用示例
4.1 前置条件
参考《Kingbase FlySync 安装部署手册》完成KFS同步链路以及金仓数据同步管理平台KFSMC的安装部署,并启动服务。
4.2 操作步骤
1. 图形化方式:
1)精简模式
在 KFS 管理平台上创建数据校验任务,校验类型选择【精简模式】

选择要校验的表(可以选择表级、模式级、库级)

数据校验任务创建好之后,创建任务调度,执行任务选择上面创建的数据校验任务

执行任务调度后,可查看数据校验任务的执行结果

注意事项
• 仅校验数据条目数是否一致,不会校验实际数据是否一致
• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,精简模式校验结果可能有差异
2)详细模式
a. 全量校验
在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中勾选【全量校验】,默认为全量校验

选择要校验的表

数据校验任务创建好之后,创建任务调度,执行任务选择上面创建的数据校验任务

执行任务调度后,可查看数据校验任务的执行结果

注意事项
• 详细模式是逐行逐列校验,当数据量大、有大对象时,校验耗时会较长
• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异
b. 抽样校验
在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中勾选【抽样校验】

选择要校验的表

数据校验任务创建好之后,创建任务调度,执行任务选择上面创建的数据校验任务

执行任务调度后,可查看数据校验任务的执行结果

注意事项
• 详细模式是逐行逐列校验,当数据量大、有大对象时,校验耗时会较长。当校验服务所 在机器资源充足时,可通过调整 KFS 数据校验模块并行校验数量,提高校验性能
• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异
c. 分片校验
在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中设置分片条数大小(每片校验的记录条数,会根据录入的条数分片,分片结果和记录条数并不会完全一致)

选择要校验的表

数据校验任务创建好之后,创建任务调度,执行任务选择上面创建的数据校验任务

执行任务调度后,可查看数据校验任务的执行结果

注意事项
• 推荐使用数据选择性好的主键列分片,仅支持整型、时间类型列分片
• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异
d. 差异数据(表)二次校验
在校验结果存在不一致的校验结果页面,点击【差异结果处理】按钮,在下拉选项中选择【差异数据二次校验】

在弹出的对话框中选择是,打开差异数据表

点击【确定】后弹出是否立即执行对话框,选择【确定】执行数据校验任务(执行原有的数据校验任务,但校验内容只有差异的数据内容)


在结果查看页面可以看到原校验任务再执行了一次

查看任务详情,可以看到数据校验内容只有差异数据

注意事项
• 仅有主键表支持
• 数据变化频繁,二次校验可能仍有差异
• 尽量在目标端追平校验期间的增量后,进行差异数据二次校验
• 2024 年 1 月份以后的版本支持该功能
e. 编码差异场景校验
开启内存校验功能vim compare/conf/application.properties

然后重启 compare 服务,使配置生效
在管控台上按照详细校验的方式创建数据校验任务,进行数据校验
注意事项
• 差异结果数据量大时,内存占用较大
f. 抽样校验基于快照的存量数据校验
ORACLE-Kingbase ES组合,数据迁移完成后,源端有增量业务数据,目标端KFS处于offline状态时。
查询源端 oracle 数据库的 scn 号(这个 scn 号为迁移数据到目标端使用的SCN号,要保证不要过旧且数据已同步到目标端)

在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中设置 SCN 值为步骤 1 查询到的值

选择要校验的表

数据校验任务创建好之后,创建任务调度,执行任务选择上面创建的数据校验任务

执行任务调度后,可查看数据校验任务的执行结果(之前查询的 scn 号节点,源端共309 条数据)

此时源端数据库中的数据条数

注意事项
• 设置的 scn 较老时,可能会报快照过旧
• 当前只支持ORACLE-Kingbase ES组合
g. 不停机校验
登录KFSMC,数据校验-校验设置,开启不停机校验

参考详细校验任务新建步骤,新建详细校验任务,新建调度任务,并执行,查看校验结果


再次执行校验任务,查看校验结果


可以看到,表的数据量变化,在有业务的场景下,校验结果仍一致
注意事项
• 目前数据源支持ORACLE、Kingbas ES、DWS
• Kingbas ES源端有业务时,可能小概率出现两端有差异,可多次执行校验,如果多次校验结果差异数据相同,则可以进一步定位两端数据是否不一致
3). MD5 模式
创建校验任务,校验类型选择【MD5 校验】

选择校验的表

创建调度任务,关联 MD5 校验任务

执行调度任务,查看校验结果

注意事项
• 无主键表,需要设置 custompkey 后才能支持 MD5 校验
• MD5 校验会跳过时间类型、大对象类型列
• 需要在数据库侧计算 MD5 值,对数据库资源有占用
• 异构数据库只支持 kes-oracle 的组合
• 异构数据库,中文可能因字符集编码原因导致 MD5 校验结果不一致
4) 增量校验
创建数据校验任务,校验类型选择【增量校验】,触发大小设置为 10,触发时间设置为 10min(注:触发大小和触发时间都是自定义的,触发大小,指主键值个数超过多少个时触发,时间单位有分、时、天,指上次执行成功后间隔多久触发)

选择要校验的表

创建调度任务,关联增量校验任务

执行调度任务,会在结果页面生成一个持续在运行的数据校验任务

源端插入数据 1 条数据,等待 10min 会自动触发一次数据校验


在 10min 内,在源端插入 11 条数据,会自动触发一次数据校验


注意事项
• 支持的数据源有限,当前支持 oracle-kes、kes-kes、sqlserver-kes、oracle-dws 组合
• 校验的是解析到的 kufl 数据和目标端数据的一致性,故如果解析出现问题,无法识别到
源端、目标端数据是否一致
2. 命令行方式:
1). 登录KFSMC所在机器的服务器
2). 修改配置文件table.properties

3). 切换到命令目录console/bin,执行命令创建并执行任务名为“test_01”的详细校验任务
./cmdcompare create -port 8089 -username admin -password 123 -source.host 10.10.3.119 -source.port 11000 -source.service m_kes_3112 -target.host 10.10.3.119 -target.service s_kes_3113 -target.port 11000 -name 'test_01' -type all |
4.3 结果展示
图形化方式校验结果:



命令行方式执行结果:

可根据执行结果提示的结果路径,查看具体执行结果


参考资料
《Kingbase FlySync 安装部署手册》、《Kingbase FlySync 命令行工具参考手册》《Kingbase FlySync 版本限制手册.pdf》




