DBDataSync 2.1.4更新盘点:数据对比独立成一级菜单,实时同步延迟降至百毫秒级
|
admin
2026年10月26日 18:23
本文热度 53
|
如果你正在使用 DBDataSync,或者正在做数据库同步、迁移、数据校验相关的工作,这次更新值得花几分钟看完。
从 10 月 19 日到 10 月 25 日,DBDataSync 完成了 Wave2 和 Wave3 两轮功能更新。Wave3 的核心是把「数据对比」从原「订正校验」模块中独立出来,升级为侧边栏一级菜单;同时增强了同步与迁移能力、优化了实时同步性能,并补齐了一批用户可感知的稳定性改进。Wave2 则聚焦整库迁移产品化,交付了自动建库建表、一键接续增量、实例级全库映射、新表自动发现等能力。
一、Wave3 最大变化:数据对比独立成一级菜单
原「订正校验」模块整体更名为「数据对比」,并从「数据同步」分组中独立出来,成为侧边栏一级菜单。这不是简单改名字,而是把「对比」和「订正」解耦了。
默认情况下,数据对比只做对比、输出差异和修复 SQL;订正是发现差异后的显式动作。创建任务时只有显式开启 enableSync 才会自动订正,默认关闭;抽样模式禁用自动订正。
具体能力包括:
- • 两种对比模式:
full 全量逐行,精确定位差异;sample 抽样对比,通过 sampleStep 控制跳读步长,适合大表健康检查。 - • 行级修复 SQL:每条差异自动生成可执行 SQL。目标缺失生成
INSERT,数据不一致生成 UPDATE,目标多余生成 DELETE;BLOB 输出 0x 十六进制字面量。 - • 反向扫描优化:检查目标端多余行由「逐行 EXISTS」改为「每页一次批量 IN」,单批 500,支持联合主键行构造,大表不再 N+1。
- • 周期对比:支持
once / cron,可按天、按周自动执行。 - • 差异详情:字段级展示源值、目标值、差异说明,并新增「修复 SQL」代码块,可一键复制。
- • 整库迁移联动:迁移完成后,列表页「一键数据对比」会按任务全部映射自动创建对比任务。
对于经常做数据一致性检查的团队来说,这次调整让「先看差异、再决定是否修复」的流程更清晰,也更适合生产环境。
二、同步与迁移能力增强
Wave3 在同步和迁移侧补了不少硬能力:
- • 跨源 DDL RENAME:支持
ALTER TABLE ... RENAME COLUMN old TO new 的捕获、解析与目标方言改写。Oracle → MySQL / 金仓实测 10s 到达。 - • 跨方言类型归一:Oracle → MySQL 等跨源 DDL 自动翻译类型,例如
VARCHAR2 → VARCHAR、NVARCHAR2 → NVARCHAR、NUMBER → DECIMAL、CLOB → TEXT、RAW → VARBINARY。 - • DDL 风险分级:新增系统配置
ddlSyncPolicy。all 为全部 DDL 自动同步,默认兼容旧行为;add_only 仅新增字段自动执行,改类型 / 删列 / 改名拦截并记录日志;off 关闭 DDL 同步。 - • Oracle CDC 启动前预检测:新增 PC120(归档模式)、PC121(补充日志)ERROR 级检查,不满足时阻断启动并给出修复 SQL;无法检查时降级为 PC122 WARN。
- • CDC 覆盖补齐:实时 LOG 覆盖 MySQL、Oracle、PostgreSQL、Kingbase、SQLServer、达梦、OceanBase、MongoDB、ClickHouse;其余连接器由 TIMING 定时轮询覆盖,TiDB 明确限定为轮询模式。
- • UPSERT 降级:
forceUpdate=false 且事件缺少主键时自动降级为 UPSERT 并告警,避免增量 INSERT 因「执行 SQL 为空」中断。
这些变化对跨源迁移、DDL 同步和 CDC 稳定性的影响比较直接,尤其是 Oracle CDC 预检测和 DDL 风险分级,能减少不少上线后的意外。
三、性能:实时同步延迟大幅下降
这次性能优化里最值得关注的是实时同步延迟。
缓冲执行器消费周期由 300ms 调整为 100ms,INSERT 端到端延迟实测平均 173ms、最低 27ms,此前约 1.1s。对于实时性要求较高的同步链路,这是数量级上的改善。
另外两项优化也值得留意:
- • 反向扫描 N+1 消除:目标端多余行检查改为批量 IN,单批 500,支持联合主键行构造。
- • 静态资源缓存治理:响应增加
no-cache + must-revalidate,升级后 JS/CSS 不再被浏览器长期缓存。
四、稳定性与兼容性:这些细节用户可感知
Wave3 还修复/改进了多项容易被忽略但很影响体验的问题:
- •
DATETIME(3/6) 微秒精度不再丢失。 - •
BIGINT UNSIGNED 超出 Long 范围时使用 BigInteger,不再翻负。 - • binlog 字符串统一按 UTF-8 解码,中文 Windows(GBK)环境下中文 / emoji 不再乱码。
- • 分片读取按 UTF-8 字符边界切分,避免多字节字符被截断。
- • 断点续传游标改为数值感知比较,检查点原子落盘,重启后续跑更可靠。
- • 只读 SQL 校验补齐 CTE 写语句、
SELECT ... INTO OUTFILE 等绕过场景。
管理与界面方面也有更新:新增 maxMappingSize(默认 100)、maxRunningMappingSize(默认 20),新增、复制、启动时强制校验,0 表示不限制;支持深色 / 浅色主题切换并记忆用户选择;页面版本号由后端 VersionVO 提供,不再硬编码;操作手册同步新增数据对比章节。
五、Wave2 回顾:整库迁移产品化
Wave2 聚焦整库迁移,交付了 A/B/C/D 四项能力:
- • A 自动建库建表:目标库缺失时先
CREATE DATABASE 再读元数据;目标表缺失时按源端 DDL 自动建表。 - • B 一键接续增量:整库迁移完成后一键生成同库增量驱动,自动建立表 / 字段映射并接续 CDC 位点,重复创建有幂等提示。
- • C 实例级一键全库映射:枚举源实例全部业务库,自动过滤系统库、排除已选库,批量生成「源库 → 目标库」映射。
- • D 新表自动发现:任务启动时扫描源端新增表,自动建目标表、追加表映射并纳入本轮迁移;视图与不可读对象跳过,单库失败不阻断。
配套 UI 也有改进:列表分页统一 10 行/页,去除底部大留白;同步记录页新增跨页连续序号列;仪表盘统计卡支持下钻到对应任务 / 记录列表。多源连接器矩阵 X7–X15(Redis、MongoDB、Elasticsearch、Kafka、RocketMQ 双向链路)完成运行态验证。
六、升级注意事项:这几条建议先看
- 1. 升级后请强制刷新一次浏览器(Ctrl + F5)。静态资源已改为 no-cache,但旧会话可能仍持有旧 JS/CSS。
- 2. 数据对比布尔参数请传
true。后续流程按非空覆盖,传 on 可能被覆盖为 false。 - 3. Oracle CDC 环境要求:必须开启 ARCHIVELOG 与最小 / 主键补充日志,否则预检测会阻断启动。
- 4. 达梦 CDC:需开启归档模式(
ARCH_MODE=Y),产品会自动重建 LogMiner 会话并按需切换归档日志。 - 5. 任务上限:默认最多 100 个驱动、20 个运行中驱动;如需调整,在「系统管理 → 系统配置」中修改,0 为不限制。
- 6. 数据对比结论:以结果 payload 中的
diffTotal 为准;结果行 isSuccess 是执行态标记。
结语
整体看,DBDataSync 2.1.4 这一轮更新的关键词是「数据对比产品化」「实时同步提速」和「迁移链路补强」。数据对比独立成一级菜单后,对比与订正的边界更清晰;实时同步延迟从约 1.1s 降到平均 173ms;DDL 风险分级、Oracle CDC 预检测、UPSERT 降级等能力则让同步和迁移更可控。
以上功能均经真机 E2E 验证(Windows 控制台 + MySQL / Oracle / 金仓 / Redis 等真实库),未实测项已在测试报告中单独标注。更详细的 BUG 测试、CDC 压力测试、数据对比与性能实测,可查看 reports/TEST_REPORT_WAVE3.md、reports/OPTIMIZATION_REPORT_WAVE2.md、reports/TEST_REPORT_WAVE2.md,以及 dbsyncer/README.md §15、§16 的更新摘要。
仓库地址
阅读原文:点击这里
该文章在 2026/10/26 18:23:45 编辑过