tidb tikv scale-in后scale-out大量报错 pending-peer

【 TiDB 使用环境】Poc
【 TiDB 版本】v6.1.2
【复现路径】做过哪些操作出现的问题
有个tikv节点有问题,scale-in之后scale-out大量报错
pending-peer



图中的这个store_id已经不存在了

【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

日志呢

正常的中间状态, Pending 表示 Follower 或 Learner 的 raft log 与 Leader 有较大差距,Pending 状态的 Follower 无法被选举成 Leader。

scale in 完了所有tikv要均衡数据,scale out要把均衡过来的数据再移走,这时就会有很多region显示pengding状态,等这些region状态回复正常scale out就成功了

查询时候报错 9005 - Region is unavailable, Time: 40.712000s

region unavailable的基本排查:

缩容下线问题处理:

1 个赞


tikv 大量错误 [2023/03/12 11:07:04.166 +08:00] [WARN] [endpoint.rs:621] [error-response] [err=“Region error (will back off and retry) message: "peer is not leader for region 159989, leader may None" not_leader { region_id: 159989 }”]

pd-ctl region xx
看下日志里那几个region状态

和这个帖子不是一个系统吧?

{
“id”: 749271237,
“start_key”: “7480000000000005FF9E5F728000000004FF8ACA9C0000000000FA”,
“end_key”: “7480000000000005FF9E5F728000000004FF8B7F850000000000FA”,
“epoch”: {
“conf_ver”: 870,
“version”: 3584
},
“peers”: [
{
“id”: 749271238,
“store_id”: 744798049,
“role_name”: “Voter”
},
{
“id”: 749271240,
“store_id”: 1,
“role_name”: “Voter”
},
{
“id”: 749271643,
“store_id”: 744798344,
“role_name”: “Voter”
},
{
“id”: 749350570,
“store_id”: 749350518,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
}
],
“leader”: {
“role_name”: “Voter”
},
“written_bytes”: 0,
“read_bytes”: 0,
“written_keys”: 0,
“read_keys”: 0,
“approximate_size”: 0,
“approximate_keys”: 0
}

{
“id”: 749271237,
“start_key”: “7480000000000005FF9E5F728000000004FF8ACA9C0000000000FA”,
“end_key”: “7480000000000005FF9E5F728000000004FF8B7F850000000000FA”,
“epoch”: {
“conf_ver”: 870,
“version”: 3584
},
“peers”: [
{
“id”: 749271238,
“store_id”: 744798049,
“role_name”: “Voter”
},
{
“id”: 749271240,
“store_id”: 1,
“role_name”: “Voter”
},
{
“id”: 749271643,
“store_id”: 744798344,
“role_name”: “Voter”
},
{
“id”: 749350570,
“store_id”: 749350518,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
}
],
“leader”: {
“role_name”: “Voter”
},
“written_bytes”: 0,
“read_bytes”: 0,
“written_keys”: 0,
“read_keys”: 0,
“approximate_size”: 0,
“approximate_keys”: 0
}

leaner peer的store id还在吗? 这种无法选leader的肯能只有recreate region或tombstone region处理了,看前面的文档

还在的


这两个store都不存在了

6、直接查找不正常的region。

(1) 没有leader的region

pd-ctl region --jq=‘.regions[]|select(has(“leader”)|not)|{id: .id,peer_stores: [.peers[].store_id]}’

(2) region数小于一定数量的region

pd-ctl region --jq='.regions[] | {id: .id, peer_stores: [.peers[].store_id] | select(length==1) } ’

(3) 检查bad region

./tikv-ctl --data-dir /data1/tidb-data/tikv-20160 bad-regions

5.x版本:./tikv-ctl --db /data1/tidb-data/tikv-20160/db bad-regions

先找到这些region

然后后面三种处理方式:

  1. 参考恢复
  2. 恢复不了就只能重建了
  3. 选择直接删除

但是有些情况下,当不能方便地从 PD 上移除这个副本时,可以指定 tikv-ctl 的 --force 选项来强制设置它为 tombstone:

tikv-ctl --data-dir /path/to/tikv tombstone -p 
127.0.0.1:2379 -r <region_id>,<region_id> --force
1 个赞

扩缩容步骤没正确处理完,先按照 扩缩容异常处理那个文章,把那个store处理完


停掉集群后

但是tikv的日志报错warn [2023/03/12 15:16:58.687 +08:00] [WARN] [endpoint.rs:621] [error-response] [err=“Region error (will back off and retry) message: "peer is not leader for region 226029, leader may None" not_leader { region_id: 226029 }”]

那个store强制删除了

只是tiup表面强制删了,里面的还有没处理完,看上面 缩容处理那文档

三板斧果然厉害,我只祭出了第二府妥妥的解决了。