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 中的数据索引保持一致。
[tikv-importer]
backend = "tidb"
# 对于插入冲突数据时执行的操作:
# - replace:新数据替代已有数据
# - ignore:保留已有数据,忽略新数据
# - error:中止导入并报错
TiDB-backend 支持导入到已填充的表(非空表)。但是,新数据可能会与旧数据的唯一键冲突。使用 on-duplicate
配置采取不同的冲突解决策略:
设置 | 冲突时默认行为 | 对应 SQL 语句 |
---|---|---|
replace |
新数据替代旧数据 | REPLACE INTO ... |
ignore |
保留旧数据,忽略新数据 | INSERT IGNORE INTO ... |
error |
中止导入 |