背景
- doris 1.1.x
- FE:192.168.21.4,192.168.21.5(master)
有两个节点的fe,都挂了,首先重启master节点发现发错:
2022-11-25 11:27:25,797 INFO (UNKNOWN 192.168.21.5_9010_1657260956519(-1)|1) [Catalog.waitForReady():876] wait catalog to be ready. FE type: UNKNOWN. is ready: false
解决
根据官网运维说明,造成这个问题有两种可能:
- 本次FE启动时获取到的本机IP和上次启动不一致,通常是因为没有正确设置
priority_network 而导致 FE 启动时匹配到了错误的 IP 地址。需修改priority_network 后重启 FE。 - 集群内多数 Follower FE 节点未启动。比如有 3 个 Follower,只启动了一个。此时需要将另外至少一个 FE 也启动,FE 可选举组方能选举出 Master 已提供服务。
由于一直有配置priority_network且机器没更改过网络配置,所以肯定是第二个原因,所以尝试启动另一个FE,注意,此时上面那个192.168.21.5是没完全启动的(9030 mysql查询端口)根本没起来
此时另一个FE报了另外一个错
2022-11-25 13:49:29,753 ERROR (main|1) [BDBEnvironment.setup():198] error to open replicated environment. will exit.
com.sleepycat.je.EnvironmentFailureException:
(JE 18.3.12) 192.168.21.4_9010_1657261636912(-1):/home/ctgcdt/data/doris-meta/bdb recoveryTracker should overlap or follow on disk last VLSN of 40,001,327 recoveryFirst= 40,001,329 UNEXPECTED_STATE_FATAL: Unexpected internal state, unable to continue. Environment is invalid and must be closed.
这是 bdbje 的一个 bug,尚未解决。遇到这种情况,只能通过元数据运维文档 中的故障恢复 进行操作来恢复元数据了。
-
以恢复模式启动master
找到元数据最新那个FE节点(192.168.21.5),以metadata_failure_recovery=true启动,它将会成为master,然后去掉配置重启,把其它follow删掉重新添加 -
查看所有fe
show frontends;
- 删除非master FE
ALTER SYSTEM DROP FOLLOWER "192.168.21.4:9010";
- 启动非master FE,首次启动需要指定master地址
sh start_fe.sh --helper 192.168.21.5:9010 --daemon
- 重新添加FE
ALTER SYSTEM ADD FOLLOWER "192.168.21.4:9010";