COMPARISON

与市面已有工具的对比

SyncTool 不是要替代 Debezium 或 Flink CDC,而是在「配不上一套流式基础设施」的场景里,给你一个决定性的选择

维度 SyncTool Debezium + Kafka Canal Flink CDC DataX SymmetricDS
部署形态 单个 jar Kafka + Connect + ZK/KRaft Canal Server (+MQ) Flink 集群 (JM/TM) 客户端脚本 每节点部署引擎
外部依赖 Kafka、ZooKeeper ZooKeeper(集群) Flink、Checkpoint 存储 无(但需 JSON 作业) 数据库触发器
配置方式 Web 界面点选 YAML/REST + 代码消费 配置文件 + 客户端代码 SQL/DataStream 代码 JSON 作业文件 properties + 建触发器
持续增量同步 日志级 binlog 日志级 一次性 触发器
结构 (DDL) 同步 自动建表/索引/视图 ⚠️ 仅事件 ⚠️ 仅事件 ⚠️ 需自定义 需预建表 ⚠️ 有限
异构方言转换 类型/函数/引号/分页 需自行实现 ⚠️ 部分 ⚠️ 有限 ⚠️ 有限
国产数据库 达梦/金仓/GB/神通/OG 基本不支持 仅 MySQL ⚠️ 少数 ⚠️ 需自写插件 ⚠️ 有限
源库侵入性 只读查询,零侵入 需开 binlog/wal 需开 binlog 需开 binlog/wal 只读 需建触发器
断点续传 游标持久化 offset checkpoint
可视化监控 看板 + 日志 需接 Prometheus/Grafana 需自建 Flink UI(偏作业) 日志 有 Web 控制台
上手成本 分钟级 中高 中高
内网离线 无外网请求
✅ 原生支持 ⚠️ 部分支持/需额外工作 ❌ 不支持
1

「一个 jar」对「一套基础设施」

Debezium / Flink CDC 是优秀的流式框架,但要跑起来一条 MySQL → PostgreSQL 的链路,你需要 Kafka、Kafka Connect、协调服务,再写一个消费端把事件翻译成目标库的 DML。SyncTool 的等价操作是:java -jar synctool.jar,打开浏览器,建两个连接,建一个项目,点「启动同步」。

当同步需求的规模配不上一套流式基础设施的运维成本时,这个差距就是决定性的。

2

结构同步是一等公民,不是留给你的作业

绝大多数 CDC 工具只解决「数据流」,目标表得你自己先建好。SyncTool 会读取源库元数据,按目标库方言自动创建表、索引、视图、存储过程,并在源库 DDL 变更后把差异传播过去。跨异构库迁移里,建表和类型映射的工作量往往比搬数据本身更大。

3

为国产数据库与信创迁移而生

达梦、人大金仓、南大通用、神通、OpenGauss 是内置的一等选项 —— 不是「通过通用 JDBC 也许能连上」,而是各自有专门的方言实现:MERGE INTO ... FROM DUAL 的 upsert 写法、类型上限(Oracle VARCHAR2 4000)、函数名差异、标识符引号规则都已处理。Oracle/SQL Server → 国产库的替换场景是本工具的主战场。

4

零侵入源库

SymmetricDS 需要在源库建触发器;Debezium / Canal / Flink CDC 需要开启 binlog / WAL 逻辑复制并申请复制权限。SyncTool 只需要一个只读账号,通过查询游标列做增量,源库结构和配置一动不动。

5

一次性搬数 vs 持续同步

Navicat / DBeaver 的「数据传输」和 DataX 解决的是「把数据搬过去一次」。SyncTool 解决的是「让两边持续保持一致」:进程重启后从游标继续、停机期间的变更会被补齐、每一行写入都是幂等的。这是两个完全不同的问题。

🔍 什么时候不该用 SyncTool

诚实地讲清边界,比把产品吹成万能更重要。

  • 需要毫秒级延迟或严格的变更顺序 → 用 Debezium / Flink CDC。轮询方案的延迟下限就是轮询间隔。
  • 需要捕获物理删除且表很大 → 无源库审计表时,删除检测要比对双方主键全集,仅对行数低于 full-compare-max-rows 的表启用。
  • 单表数亿行的一次性初始化 → DataX 这类专为批量吞吐设计的工具更快。
  • 需要复杂 ETL 变换(清洗、聚合、多流 join) → 用 Kettle / Flink。SyncTool 做的是同步,不是转换。
  • 多主双向复制 → 用 SymmetricDS。本工具假定目标库仅由自己写入。