tidb-ligntning在物理导入模式下发生冲突时,只会对主表的数据做去重,并不会删除index对应的值

如题,虽然已经把冲突策略设置成了remove, 但是如果原始文件存在冲突,会导致虽然主表的数据是正常的,但是使用 ADMIN CHECK TABLE 时候,就会报错。
正常情况在删除主表记录时,应该根据该条记录,把其他索引树上的对应值也删除掉的。
PS: 在尝试清理索引时候,也报错了:

mysql> admin check table t1;
ERROR 8223 (HY000): data inconsistency in table: t1, index: idx_1, handle: {SA0CFCSR03GR3PS, 002420, 1844474736059351040}, index-values:"handle: {SA0CFCSR03GR3PS, 002420, 1844474736059351040}, values: [KindMysqlTime 2016-03-18 KindString SA0CFCSR03GR3PS KindString 002420 KindString SA0CFCSR03GR3PS KindString 002420 KindMysqlTime 2016-03-18]" != record-values:""
mysql> ADMIN RECOVER INDEX t1 idx_1;
ERROR 1105 (HY000): [components/tidb_query_executors/src/table_scan_executor.rs:422]: Data is corrupted, missing data for NOT NULL column (offset = 0)
mysql> 

8.0新版本的冲突策略不知道有没有解决这个问题

@ShawnYan 你在 8.0 试一下看看~


看日志也有resolve duplicate rows completed的输出,结束标志也是[“tidb lightning exit”] [finished=true]

请问是单lightning 节点导入,还是多个lightning 节点并行导入的?

Lightning日志方便发一下吗?

是单节点导入的。不过日志里貌似还包含S3的AK信息,不太方便全给。只给导入完成后,进行warning的信息可以么?

tidb-lightning-for-asktug.log (347.6 KB)
这里是导入成功后的日志,之前是导入阶段日志都是正常的;也跟开发确认了,他给的文件有问题存在重复数据。

导入前删除所有索引,导入后重建索引是否可行?

只要原始文件的数据没有重复,是不会出现这种问题的。这种问题出现后,也可以先试下ADMIN RECOVER INDEX t1 idx_1;来修复索引。
我这个场景比较特殊,出现的脏数据正好是把not null的字段填了null值,所以修复时候失败了,只能删除所有索引重建。