集群中tidb server状态不正常

【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】
【部署方式】虚拟机部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】
【集群数据量】
【集群节点数】3
【问题复现路径】
TiDB集群中有3个节点A, B, C,每个节点都部署tidb server, pd server, tikv server各1个,A节点先离线(正常关机),此时B和C达成多数一致,过一段时间后B节点离线,然后A节点重新上线

【遇到的问题:问题现象及影响】
此时查看集群状态:

A节点(10.10.122.240)的tidb server为什么处于down状态?这样岂不是无法保证集群的多数派可用?
手动执行 tiup cluster restart tidb-test -N 10.10.122.240:14000, 依然失败:

已配置了服务的自启动,也关闭了防火墙,且整个过程未发生数据损坏等异常情况.
如果这么简单的场景都需要手动干预,那运维难度实在太大了。

【资源配置】
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

先恢复pd。
我们平时运维没这么多问题,

我觉得这个场景很常见啊
B节点重新上线后,A节点倒是恢复正常了,可我觉得tidb不至于这么脆弱吧?2节点为啥就不可用?

1、确认A节点上的tidb server是真正没有启动吗?建议登录到A主机端确认一下。
2、如果确实没有启动,需要看一下tidb-server的日志,看看启动报错日志是什么?目前您给出得错误日志信息有2点:
(1)启动service失败,需要看看os用户权限是否具备启动service的权限,例如有些使用非root用户,需要进行sudo的授权才行
(2)如果权限充足,再看一下14000端口,目前是否在该主机上被其他进程占用,导致该prot无法被启动
(3)可以进一步在看看/opt/tidb/deploy/tidb-14000/log的日志信息

3 节点 PD 集群的多数派要求是至少 2 个节点存活。当 B 节点离线后,仅剩 C 节点的 PD 实例,无法形成多数派

看截图,PD和KV都保持了多数派,Server是单节点,应该不影响使用;
其次,Server没起来具体看日志原因。

1 个赞

启动关闭逻辑好乱

问题解决了,还是我自己配置的问题,扩容后副本数replication.max-replicas还是1,调整为3后就没问题了。

好吧,所以是副本数没有调整导致的 :grinning:

三节点只能允许坏一个,A离线后,需要A恢复正常才能让B离线的,否则集群单节点是不可用的

多数派机制主要是针对pd、tikv组件,因为两者都存数据,pd主要是元数据,tikv是业务数据,涉及leader的选举和调度,而tidb组件不存数据,只是为了连接客户端请求,解析、编译sql等,哪怕只有一个节点仍可提供服务,只是压力大而已。从你的集群状态来看,目前集群是可用的,但是241机器看起来是关机状态,需要优先启动该机器再考虑关机其他机器,否则会导致集群不可用