TiDB Lightning 导入模式

    • Local-backend:TiDB Lightning 首先将数据编码成键值对并排序存储在本地临时目录,然后将这些键值对上传到各个 TiKV 节点,最后调用 TiKV Ingest 接口将数据插入到 TiKV 的 RocksDB 中。如果用于初始化导入,请优先考虑使用 Local-backend 模式,其拥有较高的导入速度。

    自 TiDB 4.0.3 版本起,TiDB Lightning 引入了 Local-backend 特性。该特性支持导入数据到 v4.0.0 以上的 TiDB 集群。

    配置提供了三种策略处理可能存在的冲突数据。

    • none: 默认值。不检测冲突记录。该模式是三种模式中性能最佳的,但是可能会导致目的 TiDB 中出现数据索引不一致的情况。
    • record: 仅将冲突记录添加到目的 TiDB 中的 lightning_task_info.conflict_error_v1 表中。注意,该方法要求目的 TiKV 的版本为 v5.2.0 或更新版本。如果版本过低,则会启用 ‘none’ 模式。
    • remove: 记录所有的冲突记录,和 ‘record’ 模式相似。但是会删除所有的冲突记录,以确保目的 TiDB 中的数据索引保持一致。
    1. [tikv-importer]
    2. backend = "tidb"
    3. # 对于插入冲突数据时执行的操作:
    4. # - replace:新数据替代已有数据
    5. # - ignore:保留已有数据,忽略新数据
    6. # - error:中止导入并报错

    TiDB-backend 支持导入到已填充的表(非空表)。但是,新数据可能会与旧数据的唯一键冲突。使用 on-duplicate 配置采取不同的冲突解决策略:

    设置 冲突时默认行为 对应 SQL 语句
    replace 新数据替代旧数据 REPLACE INTO ...
    ignore 保留旧数据,忽略新数据 INSERT IGNORE INTO ...
    error 中止导入