DORIS-FE故障处理

发布时间 2023-06-13 09:49:29作者: 大鹏o

FE(follower)挂掉

日志报错:

处理方法:

情况1:单个 FE (Follower)情况

如果是单个FE,直接在conf/fe.conf 中加入 metadata_failure_recovery=true

在访问正常之后,将上面元数据恢复模式设置成false,或者将这个配置项注释掉

最后重启 FE

 

情况2:如果有observer的情况下

  1. 停掉所有的observer(正常情况下follower出现问题,observer也会挂掉)
  2. 在conf/fe.conf 中加入 metadata_failure_recovery=true 配置,重启fe。启动成功后,验证结果,连接doris集群是否可正常查询。正常后重启fe。
  3. 连接fe follower(master)将observer节点从集群中删除

ALTER SYSTEM DROP OBSERVER "OBSERVER_IP:PORT";

 

OBSERVER_IP:你要删除的Observer 节点IP

PORT:fe.conf 中的 edit_log_port,默认9010

   4. 删除observer后,到observer节点上将observer元数据目录清空,再已以下命令启动。

sh bin/start_fe.sh --helper master_fe_ip:port --daemon

 

master_fe_ip:你要Master FE 节点IP,如果是单个Follower就是你的这个Follower节点IP

port:fe.conf 中的 edit_log_port,默认9010

   5.连接follower (master)节点将启动的observer添加至集群。

   ALTER SYSTEM ADD OBSERVER "OBSERVER_IP:PORT";

 

这里是你刚才启动Observer节点加入到集群中那个

OBSERVER_IP:你要加入的Observer 节点IP

PORT:fe.conf 中的 edit_log_port,默认9010

   6.查看FE运行状态

   show fontends;

 

查看observer节点日志是否正常

情况3:多个FE(follower)的情况

通常情况下,Master FE 的元数据是最新的。可以查看 meta_dir/image 目录下,image.xxxx 文件的后缀,数字越大,则表示元数据越新。

通过比较所有 FOLLOWER FE 的 image 文件,找出最新的元数据即可。之后,我们要使用这个拥有最新元数据的 FE 节点,进行恢复。

  1. 在conf 中添加配置:metadata_failure_recovery=true。执行 sh bin/start_fe.sh 启动这个 FE。如果正常,这个 FE 会以 MASTER 的角色启动,类似于前面 启动单节点 FE 一节中的描述。在 fe.log 应该会看到 transfer from XXXX to MASTER 等字样。
  2. 启动完成后,先连接到这个 FE,执行一些查询导入,检查是否能够正常访问。如果不正常,有可能是操作有误,建议仔细阅读以上步骤,用之前备份的元数据再试一次。
  3. 通过 show frontends; 命令,应该可以看到之前所添加的所有 FE,并且当前 FE 是 master。
  4. 将conf 中的 metadata_failure_recovery=true 配置项删除,或者设置为 false,然后重启这个 FE(重要)。
  5. 查看FE运行状态

   show fontends;

如果是observer节点元数据是最新的话,按照以下步骤:

         将meta_dir/image/ROLE 文件中的 role=OBSERVER 改为 role=FOLLOWER。

  1. 按照上面的步骤启动操作即可。
  2. 按照上面的步骤启动成功后,会发现当前这个 FE 的角色为 OBSERVER,但是 IsMaster 显示为 true。因为,这里看到的 “OBSERVER” 是记录在 Doris 的元数据中的,而是否是 master,是记录在 bdbje 的元数据中的。因为我们是从一个 OBSERVER 节点恢复的,所以这里出现了不一致。
  3. 先把除了这个 “OBSERVER” 以外的所有 FE 节点 DROP 掉。

ALTER SYSTEM DROP OBSERVER "FE_ip:PORT";

 

         OBSERVER_IP:你要删除的FE 节点IP

         PORT:fe.conf 中的 edit_log_port,默认9010

  1. 通过 ADD FOLLOWER 命令,添加一个新的 FOLLOWER FE,假设在 hostA 上。在 hostA 上启动一个全新的 FE,通过 --helper 的方式加入集群。

##添加至集群

 ALTER SYSTEM ADD OBSERVER "FE_IP:PORT";

##启动

sh bin/start_fe.sh --helper master_fe_ip:port --daemon

 

         这里是你刚才启动follower节点加入到集群中那个

         FE_IP:你要加入的follower节点IP

         PORT:fe.conf 中的 edit_log_port,默认9010

         master_fe_ip:port master节点为刚才的observer节点。

  1. 启动成功后,通过 show frontends; 语句,你应该能看到两个 FE,一个是之前的 OBSERVER,一个是新添加的 FOLLOWER,并且 OBSERVER 是 master。
  2. 确认这个新的 FOLLOWER 是可以正常工作之后,用这个新的 FOLLOWER 的元数据,重新执行一遍故障恢复操作。

 

以上这些步骤的目的,其实就是人为的制造出一个 FOLLOWER 节点的元数据,然后用这个元数据,重新开始故障恢复。这样就避免了从 OBSERVER 恢复元数据所遇到的不一致的问题。