羲和(Halo)数据库迁移工具全新升级:数据校验功能上线,打造数据“迁移 + 校验”一体化平台
前言
在传统的数据迁移流程中,数据完成迁移后,往往缺乏快速、直接的数据一致性校验机制,也无法直观地向用户展示校验结果。数据一致性验证通常需要依赖外部工具(如SQL客户端、第三方校验软件)或手动编写脚本实现,主要存在以下主要痛点:
- 校验流程与迁移流程相互脱节,容易导致信息出现偏差;
- 校验结果依赖人工汇总与分析,定位异常数据效率较低。
此次羲和(Halo)数据库迁移工具的升级,核心目标即为解决上述难题。新版工具无缝整合了Oracle、MySQL、PostgreSQL等国外主流数据库到Halo数据库的数据迁移与校验,形成一体化流程。其在提升效率、降低门槛的同时,也彻底打消了用户对迁移后数据不一致的担忧。
功能使用流程
前提条件:
工具已获得读取权限,已完成数据迁移任务。
源数据库、目标数据库处于正常的运行状态。
校验配置说明:
在开始数据校验前,需要在管理模块的【校验配置】页面完成预校验配置。这里举例一个常用的重要参数“ batch-compare-size”,它用于设定抽样比对的批次大小。该参数默认为 “2000”,意味着校验时将从每张表中抽取 2000 条数据生成哈希值,并进行一致性比对。

具体操作步骤:
配置校验任务时,建议按顺序完成以下选择:
填写校验任务名称 → 选择源端数据源 → 选择源Schema → 选择需要校验的表 → 选择目标端数据源 → 选择目标Schema。
说明:支持按“百分比”随机抽样校验,或手动指定具体表进行校验(二者选一)。若Schema内表数量过多,建议采用百分比校验以提升效率。

点击确认,弹出运行日志的抽屉框,开始进行数据校验任务。

点击详情按钮可以查看校验任务中所有表的校验结果与校验状态。点击查询日志按钮可以复查运行时的日志。

点击差异详情按钮,弹出差异分析抽屉框,可以查看具体的差异数据。

此界面会集中展示所有差异记录。“check 对比总数” 明确为该表数据校验时,基于主键抽取的数据对比总数;校验规则上,若源端缺失而目标端存在,将显示“MissingSource”,若目标端缺失而源端存在,则显示“MissingTarget”;对于主键相同但字段值不同的记录,界面将并排显示源端和目标端双方差异的数据,并分别以“source”和“target”作为前缀标识,让各类数据差异一目了然。
功能价值
- 实现“迁移 + 校验”一体化:迁移工具中增加数据校验功能,无需切换工具和编写脚本,即可完成数据迁移后的一致性核对。
- 自动化适配异构场景:内置主流数据库映射规则,自动识别源/目标库数据类型,生成适配的校验逻辑。
- 简化操作与结果分析:提供可视化的校验配置界面和数据界面,将校验差异详情数据直观的展示给用户,方便快速定位与对比。
附录:
对比校验配置参数:
| 编号 | 配置参数 | 解释 | 默认值 | 说明 |
|---|---|---|---|---|
| 1 |
project |
项目ID | 1 | 项目标识 |
| 2 |
batch-fetch-size |
数据库每次查询时批量获取的行数 |
2000 |
平衡内存占用与查询效率:一次取太多占内存,太少则频繁查库,默认 2000 是通用最优值 |
| 3 |
batch-commit-size |
向仓库插入数据时(插入日志表)单次提交的行数大小 |
2000 |
控制事务粒度:批量提交减少数据库事务次数,提升写入效率 |
| 4 |
batch-progress-report-size |
每处理多少行数据,工具打印一次进度日志 |
1000000 |
用于监控大表对比进度,避免长时间无反馈(如处理 1000 万行会打印 10 次进度) |
| 5 |
database-sort |
是否在源 / 目标数据库预排序数据(查询时自动加 ORDER BY) |
true |
排序后数据对比更精准(避免行顺序不一致导致的误判),但会增加数据库查询耗时(大表需谨慎) |
| 6 |
loader-threads |
数据加载的线程数量(0 表示禁用多线程) |
0 |
多线程提升加载速度(如 2 线程并行处理数据),需根据服务器 CPU 核心数调整(避免过载) |
| 7 |
log-destination |
日志输出位置 |
stdout |
可选值: |
| 8 |
log-level |
日志级别(控制日志详细程度) |
config |
可选值(从低->高): config(配置); info(正常进度); warning(警告); severe(仅错误); |
| 9 |
message-queue-size |
加载线程的消息队列容量(队列中可缓存的任务数) |
100 |
缓冲线程任务:避免线程空闲或任务堆积,队列满时会阻塞任务生成,默认 100 适配 2 线程 |
| 10 |
number-cast |
数字转字符串的格式方式 |
notation |
(DB2/MSSQL)可选值: |
| 11 |
observer-throttle |
是否开启 “观察者阈值控制”(达到阈值时暂停加载) |
true |
防止数据加载过快导致仓库(repository)压力过大,开启后需配合 |
| 12 |
observer-throttle-size |
触发 “暂停加载” 的阈值行数(累计加载多少行后暂停) |
2000000 |
暂停后需等待 “观察者进程”(清理临时表、释放资源)完成后,才继续加载 |
| 13 |
observer-vacuum |
观察者进程是否对仓库的临时表执行 VACUUM(Postgres 清理命令) |
true |
Postgres 专属:清理临时表的无效数据、释放磁盘空间,避免仓库表膨胀 |
| 14 |
stage-table-parallel |
并行度 |
0 |
临时表的并行度 |
| 15 |
standard-number-format |
数字格式 |
000000000000 0000000000.0 00000000000 0000000000 |
DB2专属,当使用number-cast配置时,将数字格式切换为标准格式,并将数字格式设置为精度为 31 的标准数字格式,以符合 DB2 的要求。 |
| 16 |
batch-compare-size |
单表一次性进行Hash校验对比行数 |
2000 |
避免一张表对比的时候生成hash校验行数数据量太大 |
| 17 |
batch-check-size |
单表一次性进行check对比行数 |
1000 |
避免一张表对比的时候check行数数据量太大(小于等于batch-compare-size) |
| 18 |
batch-offset-size |
单表进行分页查询 |
0 |
可以选择从第几条数据后开始进行抽取对比,默认为0从第一条数据开始抽取 |
更多推荐
所有评论(0)