DOC菜单

数据迁移的概述

TIDB数据迁移(DM)是一个集成的数据迁移任务管理平台,支持从MySQL兼容的数据库(如MySQL、MariaDB、Aurora MySQL)进行全数据迁移和增量复制到TiDB。它可以帮助降低数据迁移的操作成本,简化故障处理过程。当使用DM进行数据迁移时,需要执行以下操作:

  • 部署DM集群
  • 创建上游数据源并保存数据源访问信息
  • 创建数据迁移任务以将数据从数据源迁移到TIDB

数据迁移任务分为全量数据迁移和增量数据复制两个阶段:

  • 全数据迁移:将对应表的表结构从数据源迁移到TiDB,然后读取存储在数据源中的数据,并将其写入TiDB集群。
  • 增量数据复制:完成完整数据迁移后,读取从数据源的相应表更改,然后写入TIDB群集。

下面介绍DM的特点。

基本特征

本节介绍DM提供的基本数据迁移功能。

DM核心功能

阻止并允许在模式和表级别列出迁移

“阻止和允许”列表过滤规则类似于replication-rules-db/Replication-Ruls-TableMySQL的功能,可用于仅过滤或复制某些数据库的所有操作或仅限某些表。

Binlog事件过滤

binlog事件过滤功能意味着DM可以从源数据库中的某些表中过滤某些类型的SQL语句。例如,您可以过滤所有插入表中的陈述测试sbt或过滤截断表模式中的语句测试

模式和表路由

架构和表路由特性意味着DM可以将源数据库的某个表迁移到下游的指定表中。例如,您可以从表中迁移表结构和数据测试sbtest1.源数据库中的表测试Sbtest2.在TiDB。这也是合并和迁移分片数据库和表的核心特性。

先进的功能

分片合并和迁移

DM支持从源数据库合并和迁移原始分片实例和表到TiDB,但有一些限制。有关详细信息,请参见分片DDL在悲观模式下的使用限制乐观模式下的分片DDL使用限制

在迁移过程中优化第三方在线模式更改工具

在MySQL生态系统中,gh-ost和pt-osc等工具被广泛使用。DM为这些工具提供支持,以避免迁移不必要的中间数据。有关详细信息,请参见在线DDL工具

使用SQL表达式过滤某些行更改

在增量复制阶段,DM支持SQL表达式的配置来过滤某些行更改,这允许您以更大的粒度复制数据。欲了解更多信息,请参阅使用SQL表达式过滤某些行更改

使用的限制

在使用DM工具之前,请注意以下限制:

  • 数据库版本要求

    • MySQL版本> 5.5

    • MariaDB版本> = 10.1.2

      注意:

      如果在上游MySQL/MariaDB服务器之间存在主从迁移结构,则选择以下版本。

      • MySQL版本> 5.7.1
      • MariaDB版本> = 10.1.3

      警告:

      对MySQL 8.0的支持是TIDB数据迁移v2.0的实验特征。这是建议您在生产环境中使用。

  • DDL语法兼容

    • 目前,TiDB不兼容MySQL支持的所有DDL语句。因为DM使用TiDB解析器来处理DDL语句,所以它只支持TiDB解析器支持的DDL语法。有关详细信息,请参见MySQL兼容性

    • 当遇到不兼容的DDL语句时,DM报告错误。要解决这个错误,您需要使用dmctl手动处理它,或者跳过这个DDL语句,或者用指定的DDL语句替换它。有关详细信息,请参见跳过或替换异常的SQL语句

  • 分片与冲突合并

  • 用于数据源的MySQL实例切换

    当DM-Worker通过虚拟IP(VIP)连接上游MySQL实例时,如果将VIP连接切换到另一个MySQL实例,DM可能会在不同连接中同时连接到新的和旧MySQL实例。在这种情况下,迁移到DM的Binlog与DM接收的其他上游状态迁移到DM,导致不可预测的异常甚至数据损坏。要手动对DM进行必要的更改,请参阅通过虚拟IP交换DM-worker连接