[Err] 9005 - Region is unavailable、[Err] 9001 - PD server timeout-加急

1.这种region怎么清除? → 可以接受丢数据吗?如果可以,unsafe recover

1. 在 pd-ctl 中暂定如下调度
scheduler pause balance-leader-scheduler
scheduler pause balance-region-scheduler
scheduler pause balance-hot-region-scheduler
config set replica-schedule-limit 0

2. 使用 pd-ctl 检查大于等于一半副本数在故障节点上的 Region 
要求:PD 处于运行状态
假设故障节点为 15,22,43,45,46
pd-ctl -u <endpoint> -d region --jq=’.regions[] | {id: .id, peer_stores: [.peers[].store_id] | select(length as $total | map(if .==(15,22,43,45,46) then . else empty end) | length>=$total-length) }’


3. 在所有正常的 tikv 实例上,对所有 Region 移除掉所有位于故障节点上的 Peer
要求:在所有未发生故障的机器上运行,需要关闭 TiKV 节点
## tikv-ctl --db /path/to/tikv-data/db unsafe-recover remove-fail-stores -s <s1,s2,....> --all-regions
这里 store id 为 30725906
tikv-ctl --db /path/to/tikv-data/db unsafe-recover remove-fail-stores -s 30725906 --all-regions

4. 使用 pd-ctl 检查没有 Leader 的 Region  
要求:PD 处于运行状态
pd-ctl -u <endpoint> -d region --jq '.regions[]|select(has("leader")|not)|{id: .id, peer_stores: [.peers[].store_id]}'

5. 启动 tikv

6. 检查数据索引一致性
要求:PD、TiKV、TiDB 处于运行状态,例如:
select count(*) from table as c1;
select count(*) from table force index `idx_name` as c2;
select c1 = c2;
  1. 还有已经设置为墓碑模式下线的节点,在pd层面使用pd-ctl还能看见它的region,怎么清除已经下线的kv的region?–> 在处理完 1 操作后,Tombstone :表示该 TiKV Store 已处于完全下线状态,可以使用 remove-tombstone 接口安全地清理该状态的 TiKV。 from https://docs.pingcap.com/zh/tidb/stable/tidb-scheduling#信息收集 具体操作 → https://docs.pingcap.com/zh/tidb/stable/pd-control#store-delete--cancel-delete--label--weight--remove-tombstone--limit--store_id---jqquery-string