从 Vitess 迁移数据到 TiDB

q

本文档介绍了将数据从 Vitess 迁移到 TiDB 时可以采用的工具。

由于 Vitess 的后端基于 MySQL,当从 Vitess 迁移数据到 TiDB 时,你可以直接使用 MySQL 适用的迁移数据工具,如 DumplingTiDB LightningTiDB Data Migration (DM)。需要注意的是,针对 Vitess 中的每个分片,你都需要进行相应的迁移工具配置以完成数据迁移。

通常情况下,推荐使用 DM 进行数据迁移。迁移前,需要将 DM 任务的 task-mode 设为 allimport-mode 设为 physical。更多信息,请参考完整配置文件示例

如果数据量超过 10 TiB,建议分两步导入:

  1. 使用 Dumpling 和 TiDB Lightning 导入已有数据。
  2. 使用 DM 导入增量数据。

除了以上工具,你还可以使用 Debezium 的 Vitess 连接器。该连接器可以通过 Kafka ConnectApache Flink 将 Vitess 的数据变更同步到 TiDB 中。

由于 Vitess 和 TiDB 都支持 MySQL 协议和 SQL 方言,应用层预计只涉及较少的更改。但对于一些直接管理分片或实现特定业务逻辑的任务,可能涉及较大的更改。为了方便从 Vitess 向 TiDB 迁移数据,TiDB 引入了 VITESS_HASH() 函数,该函数返回的字符串哈希值与 Vitess 的 HASH 函数兼容。

示例

Dumpling 和 TiDB Lightning

以下两个示例展示了 Dumpling 和 TiDB Lightning 如何协同工作,将数据从 Vitess 迁移到 TiDB。

  • 在此示例中,TiDB Lightning 使用逻辑导入模式,先将数据编码为 SQL 语句,然后运行这些 SQL 语句来导入数据。

    Vitess to TiDB Migration with TiDB backend

  • 在此示例中,TiDB Lightning 使用物理导入模式直接将数据导入 TiKV。

    Vitess to TiDB Migration with local backend

DM

以下示例展示了 DM 如何将数据从 Vitess 迁移到 TiDB。

Vitess to TiDB with DM

文档内容是否有帮助?