暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

中电科金仓KFS数据校验能力介绍

原创 KFS补给站 2025-01-14
356


关键字:

KingbaseFlySync、KFS、电科金仓、数据校验、数据比对、精简校验、详细校验、MD5模式、增量校验、命令行校验、全量校验、抽样校验、分片校验、差异数据(表)二次校验、编码差异场景校验、基于快照的存量数据校验、不停机校验

1.功能描述

中电科金仓自研的异构数据同步软件 KFS(Kingbase FlySync)中的数据校验模块支持数据级、表级、模式级、库级的数据一致性校验,支持设置定时任务,周期性的自动校验。

数据校验按照使用方式划分,可分为图形化界面方式的数据校验、命令行方式数据校验。

数据校验按照功能划分,主要包括:精简模式、详细模式、MD5模式、增量校验。其中详细模式可分为:全量校验、抽样校验、分片校验、差异数据(表)二次校验、编码差异场景校验、基于快照的存量数据校验、不停机校验。

周期性自动执行数据校验任务,支持的调度策略有:

仅执行一次:当选择仅执行一次时,需要设置具体在哪天的什么时间执行

  1. 每小时执行一次:当选择每小时执行一次时,需要设置具体在每个小时的什么时候执行(几分几秒)

  2. 每天执行一次:当选择每天执行一次时,需要设置具体在每天的什么时间执行(几点几分几秒)

  3. 每周执行一次:当选择每周执行一次时,需要设置具体在周几的什么时间执行

  4. 每月执行一次:当选择每月执行一次时,需要设置具体在几号的什么时间执行

2.使用场景介绍

在数据库迁移、数据汇聚、容灾备份和大数据平台建设等场景下,需要确认两端数据的一致性的场景。

  • 精简模式主要针对场景

仅校验源端、目标端数据条目数是否一致。主要用于大数据量表粗略判断数据是否存在差异的场景。

  • 详细模式

1)全量校验主要针对场景

校验表的全量数据,确认详细数据是否一致。

2)抽样校验主要针对场景

仅校验表中符合条件的数据,如按时间筛选,校验筛选结果的详细数据是否一致

3)分片校验主要针对场景

大表详细校验一次性查询数据量大,可能导致校验异常。通过分片校验,将大表拆分成多片,通过校验各分片数据从而完成大表的校验,可以提升数据校验的效率。

4)差异数据(表)二次校验主要针对场景

在增量数据实时同步期间进行详细数据校验,因为同步延迟导致校验结果有差异,待目标端入库后可以快速的针对差异表或差异数据进行校验,提高数据校验功能的使用体验

5)编码差异场景校验主要针对场景

源端、目标端数据库编码不同,导致排序结果不一致,进而导致校验结果不一致。可以开启内存校验参数配置,会根据差异结果的主键再次校验两端的详细数据。

如 Oracle(gbk)-kes(utf8),相同的数据,校验结果不一致(校验存在差异的数据总和= 源端数据量+目标端数据量),需要开启内存校验

6)基于快照的存量数据校验

ORACLE-Kingbase ES组合,数据迁移完成后,源端不停业务,校验迁移的存量数据一致性。

7)不停机校验

源端不停业务,校验两端数据的一致性

  • MD5 模式主要针对场景

需要快速校验两端数据一致性的场景,通过校验每行数据的生成的 MD5 摘要值确认两端数据的一致性,提升数据校验的效率

  • 增量校验主要针对场景

仅校验增量数据的场景

3.配置使用方式介绍

  • 参考《Kingbase FlySync 安装部署手册》部署金仓数据同步管理平台(KFSMC)、同步程序(KFS)

  • 图形化方式:

  1. 登录KFSMC

  2. 点击部署管理-节点管理-新建,添加KFS源端、目标端节点

  3. 点击数据校验-任务管理,新建校验任务

  4. 点击数据校验-调度管理,新建调度任务,关联校验任务

  5. 点击数据校验-调度管理-立即执行,或等待校验任务定时自动调起

  6. 点击数据校验-查看结果,查看校验任务执行结果

  • 命令行方式:

  1. 登录KFSMC所在服务器

  2. 修改配置文件console/conf/table.properties

  3. 切换到命令目录console/bin执行cmdcompare命令,参考./cmdcompare help

4.使用示例

4.1 前置条件

参考《Kingbase FlySync 安装部署手册》完成KFS同步链路以及金仓数据同步管理平台KFSMC的安装部署,并启动服务。

4.2 操作步骤

1. 图形化方式:

1)精简模式

在 KFS 管理平台上创建数据校验任务,校验类型选择【精简模式】

图片.png

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

图片.png

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

图片.png

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

图片.png

注意事项

• 仅校验数据条目数是否一致,不会校验实际数据是否一致

• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,精简模式校验结果可能有差异

2)详细模式

a. 全量校验

在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中勾选【全量校验】,默认为全量校验

图片.png

选择要校验的表

图片.png

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

图片.png

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

图片.png

注意事项

• 详细模式是逐行逐列校验,当数据量大、有大对象时,校验耗时会较长

• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异

b. 抽样校验

在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中勾选【抽样校验】

图片.png

选择要校验的表

图片.png

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

图片.png

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

图片.png

注意事项

• 详细模式是逐行逐列校验,当数据量大、有大对象时,校验耗时会较长。当校验服务所 在机器资源充足时,可通过调整 KFS 数据校验模块并行校验数量,提高校验性能

• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异

c. 分片校验

在 KFS 管理平台上创建数据校验任务,校验类型选择【详细模式】,在高级参数中设置分片条数大小(每片校验的记录条数,会根据录入的条数分片,分片结果和记录条数并不会完全一致)

图片.png

选择要校验的表

图片.png

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

图片.png

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

图片.png

注意事项

• 推荐使用数据选择性好的主键列分片,仅支持整型、时间类型列分片

• 针对动态场景,即当源端数据库不断有业务数据插入,增量数据也在同步时,因为存在短暂的同步延迟,详细模式校验结果可能有差异

d. 差异数据(表)二次校验

在校验结果存在不一致的校验结果页面,点击【差异结果处理】按钮,在下拉选项中选择【差异数据二次校验】

图片.png

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

图片.png

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

图片.png

图片.png


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

图片.png

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

图片.png

注意事项

• 仅有主键表支持

• 数据变化频繁,二次校验可能仍有差异

• 尽量在目标端追平校验期间的增量后,进行差异数据二次校验

• 2024 年 1 月份以后的版本支持该功能

e. 编码差异场景校验

开启内存校验功能vim compare/conf/application.properties

图片.png

然后重启 compare 服务,使配置生效

在管控台上按照详细校验的方式创建数据校验任务,进行数据校验

注意事项

• 差异结果数据量大时,内存占用较大

f. 抽样校验基于快照的存量数据校验

ORACLE-Kingbase ES组合,数据迁移完成后,源端有增量业务数据,目标端KFS处于offline状态时。

查询源端 oracle 数据库的 scn 号(这个 scn 号为迁移数据到目标端使用的SCN号,要保证不要过旧且数据已同步到目标端)

图片.png

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

图片.png

选择要校验的表

图片.png

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

图片.png

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

图片.png

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

图片.png

注意事项

• 设置的 scn 较老时,可能会报快照过旧

• 当前只支持ORACLE-Kingbase ES组合

g. 不停机校验

登录KFSMC,数据校验-校验设置,开启不停机校验

图片.png

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

图片.png

图片.png

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

图片.png

图片.png

可以看到,表的数据量变化,在有业务的场景下,校验结果仍一致

注意事项

• 目前数据源支持ORACLE、Kingbas ES、DWS

• Kingbas ES源端有业务时,可能小概率出现两端有差异,可多次执行校验,如果多次校验结果差异数据相同,则可以进一步定位两端数据是否不一致

3). MD5 模式

创建校验任务,校验类型选择【MD5 校验】

图片.png

选择校验的表

图片.png

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

图片.png

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

图片.png

注意事项

• 无主键表,需要设置 custompkey 后才能支持 MD5 校验

• MD5 校验会跳过时间类型、大对象类型列

• 需要在数据库侧计算 MD5 值,对数据库资源有占用

• 异构数据库只支持 kes-oracle 的组合

• 异构数据库,中文可能因字符集编码原因导致 MD5 校验结果不一致

4) 增量校验

创建数据校验任务,校验类型选择【增量校验】,触发大小设置为 10,触发时间设置为 10min(注:触发大小和触发时间都是自定义的,触发大小,指主键值个数超过多少个时触发,时间单位有分、时、天,指上次执行成功后间隔多久触发)

图片.png

选择要校验的表

图片.png

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

图片.png

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

图片.png

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

图片.png

图片.png

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

图片.png

图片.png

注意事项

• 支持的数据源有限,当前支持 oracle-kes、kes-kes、sqlserver-kes、oracle-dws 组合

• 校验的是解析到的 kufl 数据和目标端数据的一致性,故如果解析出现问题,无法识别到

源端、目标端数据是否一致


2. 命令行方式:

1). 登录KFSMC所在机器的服务器

2). 修改配置文件table.properties

图片.png

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 结果展示

图形化方式校验结果:

图片.png

图片.png

图片.png

命令行方式执行结果:

图片.png

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

图片.png

图片.png


参考资料

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论