大家好,我是向光。
在上一篇文章里,我们一起聊了排查FE问题的基本思路,并准备好了我们的“应急工具箱”(SOP清单)。
今天,咱们就不多说理论了,直接上干货:实战演练。
我从社区和日常支持中,整理了几个最高频的FE故障场景。你可以把这篇文章收藏起来,当成一份应急恢复手册。你可以先按顺序浏览下面的场景,看看是否符合你的问题;如果找不到完全匹配的,也别着急,可以直接跳到文末,那里有“终极解决方案”可以尝试。
希望这份手册能帮你做到“心中有数,手上有招”。
这是一个很典型的“基础设施”问题,但确实经常遇到。
fe.log
里可能会出现 com.sleepycat.je.DiskLimitException
这样的报错。je.info.0
日志里也可能会有 Disk limit violation
(磁盘超限)的字样。fe.log
里出现 Clock delta ... exceeds max permissible delta
(时钟偏差超出最大允许值)的错误。date
命令手动把时间校准。fe.log
里可能会报 Commit policy: SIMPLE_MAJORITY
相关的错误,抱怨没有足够多的节点响应。je.info.0
日志里,你可能会看到 current group size
(当前组内成员数)比你预期的Follower数量要少。有时候,你会发现FE进程莫名其妙就消失了,但fe.log
里干干净净,没有任何错误。这时候,凶手可能不是FE自己,而是操作系统。
dmesg -T | grep -i java
命令,查看操作系统日志。如果看到 Out of Memory
或者 Kill process
相关的字样,基本就可以断定,是操作系统的OOM Killer机制“出手”了。这个场景非常隐蔽,经常表现为FE Master毫无征兆地切换,甚至挂掉,然后新的Master很快又重蹈覆辙。
你会看到什么现象?
为什么会这样?
怎么恢复?
fe.conf
中调整:
label_keep_max_second = 21600 # 保留6小时
streaming_label_keep_max_second = 21600 # 保留6小时
这也是个高频问题,通常有两个原因:
fe.conf
里通过priority_network
配置项明确告诉Doris该用哪个,它就可能“选错”IP。这个错误的IP和它在集群里注册的IP不一致,导致它无法加入集群。priority_network
,然后重启FE。⚠️ 警告:以下操作涉及元数据的手动恢复,风险较高。在执行任何一步之前,请务必、务必、务必备份好你的
doris-meta
目录!
这是首选的恢复方案,安全又简单。前提是你的集群里至少还有一个健康的FE节点(Master或Follower)。
在出问题的FE节点上,先停掉进程:sh bin/stop_fe.sh
。
备份一下旧的元数据目录,以防万一:mv doris-meta doris-meta_bak
。
新建一个空的元数据目录:mkdir doris-meta
。
以--helper
模式启动,让它像个新兵一样,从健康的老兵那里把所有数据同步过来:
sh bin/start_fe.sh --helper <健康FE的IP>:<fe_edit_log_port> --daemon
这是最坏的情况,需要我们像做“心脏复苏”一样,手动救活一个节点,再由它来救活整个集群。
停止所有FE进程,如果配置了自动拉起,记得先关掉。
找到“希望的种子”:在所有FE节点的doris-meta/image/
目录下,找到那个image.xxxxx
后缀数字最大的文件所在的节点。这个节点保存了最新的元数据快照,我们就选它作为恢复的“种子选手”。
以元数据恢复模式启动“种子选手”(慎用!可能会导致脑裂):
sh bin/start_fe.sh --metadata_failure_recovery --daemon
fe.conf
里加上metadata_failure_recovery=true
,再正常启动。验证恢复:启动成功后,连接上这个FE,执行show frontends;
,你应该能看到自己是Master。简单查询几个表,确认数据是否正常。
“清理门户”:确认恢复成功后,将其他(已损坏的)FE节点从集群中剔除,避免它们捣乱:
ALTER SYSTEM DROP FOLLOWER "follower_host:edit_log_port";
回归正常模式(非常重要!):
--metadata_failure_recovery
参数或注释掉metadata_failure_recovery=true
配置)。sh bin/start_fe.sh --daemon
。重建集群:现在你有了一个健康的Master节点,对于其他节点,就可以用方案A(--helper
模式)的方式,让它们一个个地“归队”了。
如果这些方案还是没能解决你的问题,请不要再进行更多的冒险尝试。把上一篇文章SOP清单里收集到的所有信息,整理好,随时来社区里发帖提问。
别担心,我们一直都在。
感谢看到最后!如果觉得内容还不错,希望可以随手点赞、在看、转发三连,你们的支持是我持续分享的最大动力。