数据已导入成功,但是最后报了error

【 TiDB 使用环境】生产\测试环境\ POC
【 TiDB 版本】
【遇到的问题】
【复现路径】
使用5.4版本的lightning对csv文件导入tidb数据库,最后报了个error,但是我查看数据库,数据是已经成功导入了的。
【问题现象及影响】
【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)


日志中有看到重复key的警告

已经导入成功了 我用mysqldump导入也会出现错误 我用-f 强制导入的

所以这个error到底是什么鬼

忽略就行

但是确实存在漏数的问题,在linux上用"wc -l 文件路径"统计的行数与导入tidb集群的行数有差别,wc统计的行数要多于数据库中的行数

on-duplicate设置的是什么?有设置严格模式吗?
tidb-lightning的配置文件发一下呢?


没有设置on-duplicate参数,所以应该是默认值

严格模式应该是设置了

那确认下csv文件的数据格式,我之前遇到过,csv文件数据格式问题导致导入数据不一致的情况

几千万的数据只差几十条,很难排呀:innocent:

您好,请问 backend 是 local 吗?

如果是 local,checksum mismatch 就是数据不一致的意思,一般是导入前表里有数据,或者中途失败后没有断点续传或者没有清空表导致,此时最好的方法就是清空表后重新导入。

1赞

现在 lightning 有前置检查的(5.3 开始),没有设置 increment mode 表里不能有数据,有的话,导入之前就直接报错。所以一般不会是这个原因。

另外,checksum mismatch 表示,导入过程中出现一些错误(大概率是数据重复),尽管表里面有数据,但是由于这些数据跟您想导入的数据不一致,所以还是理解为导入失败比较好。

可以参考这个文档来解决您的问题:https://docs.pingcap.com/zh/tidb/dev/tidb-lightning-error-resolution#local-backend-模式下解决重复问题

有一种方式可以协助定位不一致的数据

你把csv同样的数据导入一份到mysql中,确认导入的数据条数是否一样;

然后通过sync-diff-inspector来对比一下mysql表中的数据和tidb表中的数据的一致性,该工具会列出不一致的数据和条数等

详细可参考:https://docs.pingcap.com/zh/tidb/stable/sync-diff-inspector-overview

是local,数据条数都不一样,数据肯定不一样呀,主要是数据太大,无法一条条比较

要是影响不大就留着呗,影响大就重新导入

先重复导入 select distinct into 新表

先重复导入 select distinct into 新表。这样只需要2个步骤 就能忽略重复数据