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。
  • 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 的原理架构、适用场景,建议先观看下面的培训视频。注意本视频只作为学习参考,具体操作步骤和最新功能,请以文档内容为准。