一、产品概述
在企业数据库运维中,数据迁移、持续同步和灾备数据准备是高频且高风险的操作。传统开源方案在实际落地时,往往需要组合全量迁移、Binlog 消费和任务编排等多个组件;面对多库同步、在线 DDL、大表以及大字段表等复杂场景,还需要进行大量定制和人工干预。
为降低数据同步的部署和使用门槛,我们自主研发了 MySQL-DTS 数据同步工具。产品无需额外部署消息队列或外部同步组件,可直接连接源端和目标端运行,自动完成表结构同步、全量数据迁移和持续增量同步。目前,MySQL-DTS 已投入实际生产环境稳定运行,源端支持 MySQL ,目标端支持 MySQL 和 TiDB 。
二、核心能力一览
1. 三种同步模式,覆盖不同场景
MySQL-DTS 提供三种工作模式,用户可以根据业务目标灵活选择:
结构同步 :仅同步表结构,适用于预建表、测试环境初始化和数据库结构对齐,完成后自动退出
全量同步 :自动同步表结构和存量数据,适用于一次性数据搬迁、实例迁移和灾备环境初始化,完成后自动退出
增量同步:依次完成表结构同步、全量数据同步和持续增量同步,适用于准实时数据同步、在线迁移割接和灾备数据准备,任务将常驻运行
三种模式覆盖了从结构初始化、一次性迁移到长期数据同步的不同需求。其中,增量模式会自动完成"结构同步 → 全量同步 → 增量同步"的完整流程,无需用户多次提交同步任务。
2. 全量同步,兼顾速度与稳定

全量同步需要解决两个问题:一是快速搬迁存量数据,二是为后续增量同步建立准确的起点。
MySQL-DTS 通过一致性快照获取全量数据视图,同时记录对应的 Binlog 位点,使全量数据与后续增量变更能够连续衔接,降低数据遗漏和重复回放风险。
多表并发 :支持同时同步多张表,充分利用源端、目标端和网络的 IO 吞吐
单表分片并发 :对于数值型主键表,按照主键范围切分为多个 chunk,并行完成数据读取和写入
全局并发管控 :通过全局最大并发 chunk 数控制整体资源消耗
智能分页策略 :数值型主键优先使用 range chunk;非数值主键自动使用 keyset 游标分页
大字段表保护:自动识别 TEXT、BLOB、JSON 等字段的重表,降低内存占用及超限风险
3. 增量同步,持续追平数据变更

完成全量同步后,MySQL-DTS 会通过 MySQL 复制协议持续消费源端 ROW 格式的 Binlog,并将 INSERT、UPDATE、DELETE 和 DDL 等变更按白名单放行规则回放到目标端。
双位点模式 :支持 GTID 和传统 file+pos 两种模式,覆盖 MySQL 5.5 及以上所有版本
表级有序调度 :同一张表的事件固定路由至同一个 worker,保证表内变更顺序
批量提交 :worker 按照行数阈值或等待时间聚合变更并批量提交
断点续传:已确认的增量位点 checkpoint 持久化保存,任务重启后可从安全位点继续
4. 持续运行与故障恢复
增量任务可能持续运行数天、数月甚至更长时间。MySQL-DTS 围绕位点安全、连接恢复和异常处理设计了完整的运行保障机制。
安全位点推进 :以所有并发 worker 均已处理完成的低水位位置作为可恢复位点
GTID 自动重连 :短暂网络中断/实例切主时,可重新建立连接并从安全位点继续消费
file+pos 保守处理 :连接中断时采用保守退出策略,待确认源实例状态后再恢复
错误分级处理 :临时性错误重试,不可恢复错误及时终止并输出明确原因
监控&告警:全量同步支持查看迁移进度,增量同步拥有告警机制
5. DDL 同步与在线变更兼容
MySQL-DTS 在增量阶段默认同步 DDL,并针对生产环境中常见的在线表结构变更工具进行了兼容处理。
pt-online-schema-change 兼容 :自动识别临时触发器、影子表和表切换操作,过滤无效临时对象
gh-ost 兼容 :识别控制表、影子表和多表 RENAME 流程,保障在线 DDL 与增量数据有序衔接
TiDB DDL 兼容:自动处理 MySQL 与 TiDB 之间的 DDL 差异,保证结构一致性
6. 多库同步与库重命名

对于包含多个业务库的 MySQL 实例,MySQL-DTS 可以通过一个任务统一完成同步,无需为每个数据库分别启动进程。
单个任务可同步同一源实例上的多个数据库,并同步各数据库中的全部业务表
支持源库与目标库的重命名映射,例如将源端 db1 同步至目标端 aaa
多个数据库共享同一条 Binlog 消费链路和同步位点,减少重复任务与连接开销
内置系统库黑名单,防止系统库被误同步
7. 前置校验与安全防护
数据同步一旦开始,错误操作可能影响数据同步的最终数据。MySQL-DTS 会在任务启动前执行多项检查,尽可能提前暴露风险。
外键检查 :检测源端表是否存在外键约束,避免并发写入时因表依赖顺序导致同步失败
标识符合规检查 :检查库名、表名和列名等标识符在目标端是否合法
存储过程和触发器检查 :默认检测到相关对象时停止任务,用户确认后可显式启用
目标端保护 :目标端已存在同名表时默认报错退出,不自动删除或覆盖已有表
版本检查:目标 MySQL 版本必须大于或等于源端 MySQL 版本
三、典型使用场景

MySQL-DTS 可用于数据库版本升级、异构数据库迁移、数据副本同步以及自建环境上云等场景。
MySQL 版本升级 :创建更高版本的目标实例,通过 DTS 将原有数据迁移至新实例
MySQL 迁移至 TiDB :处理两种数据库在 DDL 语法和执行方式上的差异
MySQL 数据备份 :源端和目标端选择相同实例,将数据全量同步到本实例的另一个库中
自建环境迁移至智汇云:将本地机房、虚拟机中的 MySQL 数据迁移至智汇云平台
四、与传统同步方案相比的优势
传统数据同步方案通常需要组合全量迁移工具、Binlog 消费组件和任务编排系统,用户还需要自行处理不同阶段之间的位点交接、异常恢复和运行管理。MySQL-DTS 将这些能力整合在同一个任务生命周期中。
一条任务贯穿完整流程 :自动完成结构同步、全量迁移和持续增量同步
面向长期运行设计 :安全 Checkpoint、GTID 自动重连和 file+pos 保守退出策略
适应复杂生产环境 :支持多库映射、大表分片、大字段保护,以及 pt-osc、gh-ost 在线 DDL
资源消耗可配置、可约束 :表并发、chunk 并发和写入批量均可调整
同步链路直接透明:数据从源端直接传输至目标端,不经过外部平台或消息队列中转
五、总结与展望
MySQL-DTS 覆盖 MySQL 数据同步的完整生命周期,为一次性数据搬迁、在线迁移、TiDB 迁移和灾备数据准备提供统一的数据同步能力。其核心价值体现在以下几个方面:
可靠 :通过一致性快照、安全位点、断点续传和错误分级处理,降低迁移和长期同步过程中的数据风险
可控 :大字段保护、并发度、chunk 大小和写入批量等策略均可根据业务环境调整
兼容:支持 GTID 和 file+pos 位点模式,覆盖 MySQL 5.5、5.6、8.0 等版本,并支持 TiDB 目标端以及 pt-osc、gh-ost 在线变更场景
后续,MySQL-DTS 将继续完善监控和 Web 管理能力,并计划扩展 PostgreSQL 等异构目标端,让数据迁移与持续同步变得更加简单、透明和可控。