TiDB Lightning 简介

    TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具,可。

    TiDB Lightning 有以下两个主要的使用场景:

    • 迅速导入大量新数据。
    • 恢复所有备份数据。

    目前,TiDB Lightning 支持:

    1. 在导入数据之前, 会自动将 TiKV 集群切换为“导入模式” (import mode),优化写入效率并停止自动压缩。

    2. tidb-lightning 会在目标数据库建立架构和表,并获取其元数据。

    3. tidb-lightning 会为每一个区块准备一个“引擎文件 (engine file)”来处理键值对。tidb-lightning 会并发读取 SQL dump,将数据源转换成与 TiDB 相同编码的键值对,然后将这些键值对排序写入本地临时存储文件中。

    4. 引擎文件包含两种:数据引擎索引引擎,各自又对应两种键值对:行数据和次级索引。通常行数据在数据源里是完全有序的,而次级索引是无序的。因此,数据引擎文件在对应区块写入完成后会被立即上传,而所有的索引引擎文件只有在整张表所有区块编码完成后才会执行导入。

    5. 整张表相关联的所有引擎文件完成导入后, 会对比本地数据源及下游集群的校验和 (checksum),确保导入的数据无损,然后让 TiDB 分析 (ANALYZE) 这些新增的数据,以优化日后的操作。同时,tidb-lightning 调整 AUTO_INCREMENT 值防止之后新增数据时发生冲突。

      表的自增 ID 是通过行数的上界估计值得到的,与表的数据文件总大小成正比。因此,最后的自增 ID 通常比实际行数大得多。这属于正常现象,因为在 TiDB 中自增 ID 。

    TiDB Lightning 还支持使用 TiDB-backend 作为后端导入数据:tidb-lightning 将数据转换为 INSERT 语句,然后直接在目标集群上执行这些语句。详见 TiDB Lightning Backends