tidb 的tiflash节点启动失败

tidb -5.0.3
这种store怎么处理?
过程是这样: 集群特别满、卡。 我整个重启了一下 reload 集群。 跑到一半的时候 失败了,自动退出了。只重启了部分节点。 此时发现所有的tiflash节点(5个) 起不来了,反复重启状态。 没办法就新买一台机器,scale-out 扩容了一台节点。 然后我把线上启动失败的节点,其中的3台–force 剔除了。 然后就一直显示下线中。
中午的时候 没人使用, 我把流量关闭掉, 然后又reload重启了一下集群,这次重启集群是成功的。然后线上没下线的两台和我扩容的一台正常了。

目前这3台节点上 没有数据,–force的。 是否可以在store 里 把offline的这3台删除掉。 好像pd-ctl 交互模式 不能直接删除offline状态的store。只能删除这 tombstone 这种。 offline 什么时候会变成tombstone? 是不是要等到监控中 offline-store-peer-count 变成0,或者down-store-peer-count 变成0?

tidb-rpt-TiKV-Summary_2022-02-18T08_52_25.303Z.json (5.2 MB)

tidb-rpt-TiFlash-Summary_2022-02-18T08_51_51.545Z.json (5.5 MB)
tidb-rpt-PD_2022-02-18T08_50_42.762Z.json (9.8 MB)

2 个赞

Offline:当对某个 TiKV 缩容后,该 TiKV 会变为 Offline 状态,该状态只是 TiKV 下线的中间状态,处于该状态的 TiKV 会进行 leader 的 transfter 和 region balance ,当 leader_count/region_count (pd-ctl 获取) 均显示 transfter 或 balance 完毕后,该 TiKV 会由 Offline —> Tombstone。在 Offline 状态时,禁止关闭该 TiKV 服务以及其所在的物理服务器。
等region都迁移完了,就变成tombstone

2 个赞

现在这3台offline状态的节点 都是 leader_count 是0 region_count 不是0。
我这3台节点的服务已经没有了,目录都清空了。 还会自动由offline–>tombstone吗?

1 个赞

pd-ctl check miss-peer和 down-peer看看,这些region是不是miss或down的,用 pd-ctl operator add remove-peer <region_id> <from_store_id> 命令应该可以把这个store上的peer清除,理论上清除后会自动补副本

1 个赞

miss-peer 有,比较少
down-peer 很多,一直刷屏,不知道有多少。
这样得信息:
{
“id”: 60700083,
“start_key”: “7480000000000114FFE45F728000000000FF35AC710000000000FA”,
“end_key”: “7480000000000114FFE45F728000000000FF379BFA0000000000FA”,
“epoch”: {
“conf_ver”: 159,
“version”: 42450
},
“peers”: [
{
“id”: 60700084,
“store_id”: 38437539,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
},
{
“id”: 60700085,
“store_id”: 11585778,
“role_name”: “Voter”
},
{
“id”: 60700086,
“store_id”: 2811498,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
},
{
“id”: 60700087,
“store_id”: 1,
“role_name”: “Voter”
},
{
“id”: 60700088,
“store_id”: 5,
“role_name”: “Voter”
}
],
“leader”: {
“id”: 60700088,
“store_id”: 5,
“role_name”: “Voter”
},
“down_peers”: [
{
“down_seconds”: 300,
“peer”: {
“id”: 60700084,
“store_id”: 38437539,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
}
}
],
“pending_peers”: [
{
“id”: 60700084,
“store_id”: 38437539,
“role”: 1,
“role_name”: “Learner”,
“is_learner”: true
}
],
“written_bytes”: 0,
“read_bytes”: 0,
“written_keys”: 0,
“read_keys”: 0,
“approximate_size”: 48,
“approximate_keys”: 81920
},

1 个赞

请按照以下步骤操作:
1.查看 store 上的 region 有哪些
pd-ctl region --jq=“.regions | {id: .id, peer_stores: [.peers.store_id] | select(any(.==xxxxx))}”
2.确认这个 store 上的 region 副本可以清理后,通过上面获取的 region id 清理掉残留 region 上的 peer
operator add remove-peer
3.如果是脚本批量执行,可能存在报错 ‘failed to add operator’ ,可以在脚本中每执行一次命令后,添加 sleep 2s 或 3s,缓解报错
4.都清理完毕后,store 会变为 tombstone

5 个赞

好的,我明白了,我按照这个步骤操作下,谢谢大佬!:pray::pray::pray:

1 个赞

一个个tikv处理吧 ,处理后看看处理的region的副本数,别到时造成多副本失败就麻烦了

1 个赞

好的!

1 个赞

解决了没?

1 个赞

恢复了

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。