核心思想:物理导入 vs 逻辑导入

  • 逻辑导入(如 mysql 客户端):执行 SQL 语句(INSERT),速度慢,兼容性问题多

  • 物理导入(Dumpling+Lightning):直接导入数据文件,速度快,兼容性好

架构概述


第 1 步:使用 Dumpling 导出数据

Dumpling 的作用

  • 从 MySQL 并行导出数据和表结构

  • 生成 Lightning 所需的元数据文件

  • 支持断点续传和压缩

安装 Dumpling

常用导出命令

导出后的文件结构

第 2 步:使用 Lightning 导入数据

Lightning 的作用

  • 将 Dumpling 导出的数据快速导入 TiDB

  • 支持并行导入,速度极快

  • 自动处理数据转换和兼容性问题

安装 Lightning

创建 Lightning 配置文件

创建water- lightning.toml:

运行 Lightning 导入


详细工作流程

Dumpling 导出阶段

  1. 连接 MySQL:建立到源数据库的连接

  2. 导出表结构:生成 CREATE TABLE 语句

  3. 并行导出数据:多线程导出表数据

  4. 生成元数据:记录导出时的一致性点

Lightning 导入阶段

  1. 解析数据:读取 Dumpling 导出的文件

  2. 数据转换:将 SQL 数据转换为 TiKV 的键值对格式

  3. 数据排序:在本地对数据进行排序

  4. 切分 Region:根据数据分布切分导入范围

  5. 并行导入:多线程向 TiKV 导入数据

  6. 校验数据:验证导入数据的完整性


性能优化参数

Dumpling 优化

Lightning 优化

错误处理和监控

查看导入状态

断点续传

Lightning 支持断点续传,如果导入中断,可以重新运行相同的命令继续导入。

验证导入结果

优势总结

  1. 极高性能:比逻辑导入快 10-100 倍

  2. 数据一致性:保证导入数据的完整性和一致性

  3. 兼容性好:自动处理 MySQL 到 TiDB 的数据类型转换

  4. 可恢复性:支持断点续传,导入失败后可继续

  5. 资源控制:可以限制导入时的 CPU、内存、磁盘 I/O 使用

  6. 压缩支持:支持 gzip 压缩,节省存储空间和传输时间

适用场景

  • 大数据量迁移:TB 级别数据的迁移

  • 生产环境迁移:要求高可靠性和数据一致性的场景

  • 定期数据同步:需要快速批量导入数据的场景

  • MySQL 到 TiDB 迁移:官方推荐的标准迁移方案

这就是 Dumpling + Lightning 的完整工作流程,它是 TiDB 生态中最成熟、最高效的数据迁移方案。