数据迁移概述

本文档介绍了 TiDB 提供的数据迁移工具,以及不同迁移场景下如何选择迁移工具,从而将数据从 MySQL 或 CSV 数据源迁移到 TiDB。

迁移工具

在上述数据迁移过程中会用到如下工具:

  • Mydumper:用于从 MySQL 导出数据。建议使用 Mydumper,而非 mysqldump。
  • Loader:用于将 Mydumper 导出格式的数据导入到 TiDB。
  • Syncer:用于将数据从 MySQL 增量同步到 TiDB。
  • DM (Data Migration):集成了 Mydumper、Loader、Syncer 的功能,支持 MySQL 数据的全量导出和到 TiDB 的全量导入,还支持 MySQL binlog 数据到 TiDB 的增量同步。
  • TiDB Lightning:用于将全量数据高速导入到 TiDB 集群。例如,如果要导入超过 1TiB 的数据,使用 Loader 往往需花费几十个小时,而使用 TiDB-Lightning 的导入速度至少是 Loader 的三倍。

迁移场景

本小节将通过几个示例场景来说明如何选择和使用 TiDB 的迁移工具。

MySQL 数据的全量迁移

要将数据从 MySQL 全量迁移至 TiDB,可以采用以下三种方案中一种:

  • Mydumper + Loader:先使用 Mydumper 将数据从 MySQL 导出,然后使用 Loader 将数据导入至 TiDB。
  • Mydumper + TiDB Lightning:先使用 Mydumper 将数据从 MySQL 导出,然后使用 TiDB Lightning 将数据导入至 TiDB。
  • DM:直接使用 DM 将数据从 MySQL 导出,然后将数据导入至 TiDB。

详细操作参见 MySQL 数据到 TiDB 的全量迁移

MySQL 数据的全量迁移和增量同步

  • Mydumper + Loader + Syncer:先使用 Mydumper 将数据从 MySQL 导出,然后使用 Loader 将数据导入至 TiDB,再使用 Syncer 将 MySQL binlog 数据增量同步至 TiDB。
  • Mydumper + TiDB Lightning + Syncer:先使用 Mydumper 将数据从 MySQL 导出,然后使用 TiDB Lightning 将数据导入至 TiDB,再使用 Syncer 将 MySQL binlog 数据增量同步至 TiDB。
  • DM:先使用 DM 将数据从 MySQL 全量迁移至 TiDB,然后使用 DM 将 MySQL binlog 数据增量同步至 TiDB。

详细操作参见 MySQL 数据到 TiDB 的增量同步

注意:

在将 MySQL binlog 数据增量同步至 TiDB 前,需要在 MySQL 中开启 binlog 功能,并且 binlog 必须使用 ROW 格式

非 MySQL 数据源的数据迁移

如果源数据库不是 MySQL,建议采用以下步骤进行数据迁移:

  1. 将数据导出为 CSV 格式。
  2. 使用 TiDB Lightning 将 CSV 格式的数据导入 TiDB。

详细操作参见使用 TiDB Lightning 迁移 CSV 数据