TiDB Data Migration 简介
TiDB Data Migration (DM) 是一款便捷的数据迁移工具,支持从与 MySQL 协议兼容的数据库(MySQL、MariaDB、Aurora MySQL)到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化数据迁移过程,降低数据迁移运维成本。
产品特性
- 与 TiDB 同样保持 MySQL 兼容性。高度兼容 MySQL 协议、MySQL 5.7 和 MySQL 8.0 的常用功能及语法。
- 支持 DML & DDL 事件同步。支持解析和同步 binlog 中的 DML 和 DDL 事件。
- 支持合库合表同步模式。可以方便的将上游各个分片 MySQL 实例的各个分表数据,合并同步到下游 TiDB 的一张表。支持自定义编写同步规则以方便各种可能的同步需求,且具备自动识别和处理上游分片 MySQL 的 DDL 变更,大幅简化运维成本。
- 内置多种过滤器以灵活适应不同场景。支持以预定义事件类型、正则表达式、SQL 表达式等多种方式在数据同步过程中对 MySQL binlog 事件进行过滤。
- 集中管理。DM 支持上千个节点的集群规模,可同时运行并集中管理大量数据迁移同步任务。
- 对第三方 Online Schema Change 工具变更过程的同步优化。在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 online-ddl。
- 高可用。支持迁移任务在不同节点自由调度,少量工作节点宕机并不会影响进行中的任务。
快速安装
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
tiup install dm dmctl
使用限制
在使用 DM 工具之前,需了解以下限制:
数据库版本要求
MySQL 版本 5.6 ~ 8.0
MariaDB 版本 >= 10.1.2 (实验特性)
DDL 语法兼容性限制
目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 TiDB DDL 语法支持。
DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见如何处理不兼容的 DDL 语句。
DM 不会将视图的 DDL 语句同步到下游的 TiDB 集群,也不会将针对视图的 DML 语句同步到下游。在该场景下,建议用户在下游 TiDB 集群中自行创建视图。
GBK 字符集兼容性限制
- DM 在 v5.4.0 之前不支持将
charset=GBK
的表迁移到 TiDB。
- DM 在 v5.4.0 之前不支持将
Binlog 兼容性限制
- DM 不支持 MySQL 8.0 的新特性 binlog 事务压缩 Transaction_payload_event。使用 binlog 事务压缩有导致上下游数据不一致的风险。
Contributing
欢迎参与 DM 开源项目并万分感谢您的贡献,可以查看 CONTRIBUTING.md 了解更多信息。
社区技术支持
您可以通过在线文档了解和使用 DM,如果您遇到无法解决的问题,可以选择以下途径之一联系我们。
License
DM 遵循 Apache 2.0 协议,在 LICENSE 了解更多信息。
版本变更说明
在 v5.4 之前,DM 工具的文档独立于 TiDB 文档。要访问这些早期版本的 DM 文档,请点击以下链接:
要快速了解 DM 的原理架构、适用场景,建议先观看下面的培训视频。注意本视频只作为学习参考,具体操作步骤和最新功能,请以文档内容为准。