tidb在从5亿条的数据表查询中报错:maybe read truncated/dropped table data

TiDB 删除一行时也需要把这一行读出来来保证 affected rows 准确,所以用 SQL 无法删除。一种恢复方法是用 tikv-ctl recover-mvcc 功能,它可以把不匹配的数据删掉,比如这里缺少 default 列的这一行。但这需要停机才能使用,为了减少影响可以这样操作:

  1. 找到那个 key 所在的 region 和 store。
  2. evict 其中一个 store 上的所有 leader,然后停掉该 store。
  3. 在停掉的 TiKV 上执行 tikv-ctl --db /path/to/tikv/db recover-mvcc -r {region_id} -p {pd_ip:port}
  4. 启动 TiKV 然后把 key 所在的 region leader 迁移到该 store 上。之后依次对其他 2 个 follower 做相同操作。
2 个赞