pd server全都挂了

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境
【TiDB 版本】 6.5.5
【部署方式】机器部署
【操作系统/CPU 架构/芯片详情】

【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
昨天晚上一个pd server leader 所在的服务器迁移,进行了如下操作:

  1. 将pd leader的优先级参数由10改为1
    tiup ctl:v6.5.5 pd member leader_priority pd-122 1 --pd 11.10.40.12:2379
  2. 等了一会,leader迁移走,停止这个pd server
    tiup cluster stop xx --node 11.10.40.12:2379
  3. 之后服务器停机,服务器迁移大约40分钟,服务器启动后,pd server自动启动起来了,然后重新设置优先级,由1改为10,如下:
    tiup ctl:v6.5.5 pd member leader_priority pd-122 10 --pd 11.10.40.12:2379
  4. 过了一会,pd全都挂了,三个pd server都显示为down

  1. 之后用tiup 操作启动或者重启,都不好使了,手动登录到pd server服务器,kill进程,恢复
  2. 但是之后还是挂掉,再杀 pd server进行,然后执行如下操作(将优先级改为1)后,没再挂掉
    tiup ctl:v6.5.5 pd member leader_priority pd-122 1 --pd 11.10.40.12:2379
    【遇到的问题:问题现象及影响】
    整个集群挂了无法访问,业务侧报大量的pd server timeout

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
[2026/07/27 22:00:49.025 +08:00] [INFO] [client.go:170] [“server starts to synchronize with leader”] [server=pd-121] [leader=pd-122] [request-index=34894806674]
[2026/07/27 22:00:49.025 +08:00] [ERROR] [client.go:174] [“region sync with leader meet error”] [error=“[PD:grpc:ErrGRPCRecv]rpc error: code = Unavailable desc = server not started: rpc error: code = Unavailable desc = server not start
ed”]
[2026/07/27 22:00:50.026 +08:00] [INFO] [client.go:170] [“server starts to synchronize with leader”] [server=pd-121] [leader=pd-122] [request-index=34894806674]
[2026/07/27 22:00:50.026 +08:00] [ERROR] [client.go:174] [“region sync with leader meet error”] [error=“[PD:grpc:ErrGRPCRecv]rpc error: code = Unavailable desc = server not started: rpc error: code = Unavailable desc = server not start
ed”]
[2026/07/27 22:00:51.026 +08:00] [INFO] [client.go:170] [“server starts to synchronize with leader”] [server=pd-121] [leader=pd-122] [request-index=34894806674]
[2026/07/27 22:00:51.026 +08:00] [ERROR] [client.go:174] [“region sync with leader meet error”] [error=“[PD:grpc:ErrGRPCRecv]rpc error: code = Unavailable desc = server not started: rpc error: code = Unavailable desc = server not start
ed”]
[2026/07/27 22:00:52.026 +08:00] [INFO] [client.go:170] [“server starts to synchronize with leader”] [server=pd-121] [leader=pd-122] [request-index=34894806674]
[2026/07/27 22:00:52.027 +08:00] [ERROR] [client.go:174] [“region sync with leader meet error”] [error=“[PD:grpc:ErrGRPCRecv]rpc error: code = Unavailable desc = server not started: rpc error: code = Unavailable desc = server not start
ed”]
[2026/07/27 22:00:53.027 +08:00] [INFO] [client.go:170] [“server starts to synchronize with leader”] [server=pd-121] [leader=pd-122] [request-index=34894806674]
[2026/07/27 22:00:53.027 +08:00] [ERROR] [client.go:174] [“region sync with leader meet error”] [error="[PD:grpc:ErrGRPCRecv]rpc error: code = Unavailable desc = server not started: rpc error: code = Unavailable des

【其他附件:截图/日志/监控】

你看看这个

好的,我们现在主要是想定位原因,其实之前也操作过多次,pd都是正常的,但是这一次直接全挂了, :joy:

迁移前是否优雅停止?

建议先检查PD的日志,大概率是优先级调整触发了leader频繁切换,导致PD集群脑裂或选主异常。

可以试试以下步骤排查:

  1. 登录每个PD节点,查看日志:/data/deploy/log/pd.log,搜索"leader"、“election”、"priority"等关键词。
  2. 检查PD的etcd状态:tiup ctl:v6.5.5 pd etcd endpoint status --pd http://11.10.40.12:2379,看各节点是否健康。
  • pd-122 上线,凭借最高优先级,立刻争抢 Leader 身份
  • pd-122 离线 40 分钟,etcd 日志严重落后于另外两个 PD,强行竞选 Leader 时,需要从 follower 拉取全量 etcd 日志快照
  • 快照同步流量打满 PD 磁盘 IO / 内存,pd-122 进程夯住、内部 grpc 服务卡死,对外表现为server not started
  • 剩下两个 PD 持续向僵尸 Leader(pd-122)同步连接、无限重试,无法发起新一轮选举,整个 3 节点 PD 集群全部卡死、进程反复崩溃重启
  • 你再次把 pd-122 优先级改回 1,放弃竞选 Leader,另外两个 PD 正常完成内部选举,集群才恢复可用
2 个赞

感谢,应该是这个原因,有3点疑问:

  1. pd是启动后大约5-10分钟后,才将pd-122的优先级设置为10
  2. 如果pd-122的日志是落后另外两个pd的,即使设置为10,也不应该强制切换至pd-122上,优先级高应该是在能够保证本节点健康的情况下,再将leader切换过来
  3. 故障期间,tiup操作启停也是不可用了,只能手动登录pd服务器杀pd进程才可以

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