【 TiDB 使用环境】Poc
【 TiDB 版本】v6.1.2
【复现路径】做过哪些操作出现的问题
有个tikv节点有问题,scale-in之后scale-out大量报错
pending-peer
图中的这个store_id已经不存在了
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
【 TiDB 使用环境】Poc
【 TiDB 版本】v6.1.2
【复现路径】做过哪些操作出现的问题
有个tikv节点有问题,scale-in之后scale-out大量报错
pending-peer
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
日志呢
正常的中间状态, 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的基本排查:
缩容下线问题处理:
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处理了,看前面的文档
还在的
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
然后后面三种处理方式:
但是有些情况下,当不能方便地从 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
扩缩容步骤没正确处理完,先按照 扩缩容异常处理那个文章,把那个store处理完
那个store强制删除了
只是tiup表面强制删了,里面的还有没处理完,看上面 缩容处理那文档
三板斧果然厉害,我只祭出了第二府妥妥的解决了。