lightning 导入数据丢失一部分

tidb版本:8.4.0
lightning 使用 local模式

导入报错信息:
tidb lightning encountered error: [Lighting:Restore:ErrChecksumMismatch]checksum mismatched remote vs local => (checksum: 10626746895888228187 vs 14134638962252875849) (total_kvs: 340211130 vs 340212360) (total_bytes:52319558324 vs 52319738992)

实际查询结果比sql中的条数少了几百条数据,表没有唯一键,COLLATE=utf8mb4_bin

看下是否是文件中存在冗余数据? tidb-lightning 的 local 模式会先对所有数据做排序转写成 SST 文件,很可能会将冗余数据汇总成一条

表已经要设置一个主键,如果都没主键,数据重复了,都发现不了

1 个赞

大佬这个说法 依据是?

导入配置中设置的 conflict 模式是 默认吗?

可以看下官方文档的原理:因为 TiKV 底层是个 KV 存储,在构成键值对时候,同一个 key 对应的记录天然会被合并成一条。

可以根据冲突检测, 来看下是否符合预期。其实 local 模式导入新表报错,十有八九就是文件中的数据有重复,或者格式不对导致的
https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-physical-import-mode-usage/#冲突数据检测

我的意思是,表没有unique key,有primary key的

配置文件中没设置这个参数,应该是默认的把

检查原始文件的数据有没有重复的吧,这个是概率最大的

两表数据对比,看下缺失的数据特征;另外看下lightning的日志,过程中应该有告警什么的。