模拟多节点TiKV故障后,集群count(1) 结果不正确

  1. 集群选用3副本
  2. 模拟时按照步骤:【SOP 系列 18】TiUP 环境恢复 TiKV 副本
  3. 补数据后,实际行数=50000,执行count(1) 实际50320。问题在于为什么会这样。

操作步骤:

  1. 模拟region丢失3副本. 先mv掉deploy 安装目录、再kill 进程、再mv数据目录
  2. 禁止schedule调用
  3. 检查宕机的3台机器对应的store_id; 查询失败
  MySQL [test]> select count(1) from sbtest1;
ERROR 9010 (HY000): TiKV server reports stale command
  1. 停cdc任务
tiup ctl:v5.0.4 cdc changefeed  --pd=http://192.168.8.11:2379 pause --changefeed-id  dr-replication-task-5
  1. 故障集群停tikv
tiup cluster stop dr-primary -R=tikv
  1. 正常的tikv执行unsafe-recover
tiup ctl:v5.0.4 tikv  --db /data/tidb-data/tikv_data_p_20161/db unsafe-recover remove-fail-stores -s 1,2,7 --all-regions
  1. 缩容故障TIKV,重启tikv、pd
tiup cluster scale-in dr-primary -N=192.168.8.11:20161,192.168.8.11:20162,192.168.8.12:20160 --force -y

tiup cluster stop dr-primary -R=pd
tiup cluster start dr-primary -R=pd,tikv
  1. 停掉一个正常TiKV节点, recreate-region
tiup ctl:v5.0.4 tikv --db /data/tidb-data/tikv_data_p_20162/db recreate-region -p '192.168.8.11:2379' -r  4019
tiup ctl:v5.0.4 tikv --db /data/tidb-data/tikv_data_p_20162/db recreate-region -p '192.168.8.11:2379' -r  4031
tiup ctl:v5.0.4 tikv --db /data/tidb-data/tikv_data_p_20162/db recreate-region -p '192.168.8.11:2379' -r  4068
  1. reload 集群
tiup cluster reload dr-primary  -y
  1. 校验数据
bin/sync_diff_inspector -config=conf/dr-check.toml