• 数据迁移概述
    • 迁移工具
    • 迁移场景
      • MySQL 数据的全量迁移
      • MySQL 数据的全量迁移和增量同步
      • 非 MySQL 数据源的数据迁移

    数据迁移概述

    本文档介绍了 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-Lighting 的导入速度至少是 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 数据。