Apache Doris0.15.3 使用SQL_BLOCK_RULE导致集群FE元数据异常Down机解决方案

背景

​生产Doris集群是0.15.3版本,今天在创建SQL_BLOCK_RULE 的sqlHash规则时,导致Doris集群的FE节点同步元数据时出现空指针异常,集群3个FE节点全部挂掉且无法正常启动的情况。

异常操作行为及报错信息
1.创建SQL_BLOCK_RULE的sqlHash规则:
CREATE SQL_BLOCK_RULE test_rule_1
PROPERTIES(
  "sqlHash"="60c546559e91250393023573061921e0",
  "global"="false",
  "enable"="true"
)
2.报错信息:

在这里插入图片描述
这个问题是由于在创建SQL_BLOCK_RULE时,SqlBlockRule类中的read方法读取规则时,出现了Null值,写入Doris的元数据后,导致Doris的元数据异常引起导致的。
在这里插入图片描述

解决方案

1.(重要)首先,停止掉集群所有的数据接入任务,防止接入任务同步修改元数据。

2.修改SqlBlockRule的源码,对读取规则方法做判空处理:
在这里插入图片描述
3.下载对应版本的源码,修改源码后,使用sh build.sh --clean --fe --ui对FE重新编译打包 ,详细流程请参考:Doris编译,注意:只需要对FE做编译即可。

4.将重新打包好的palo-fe.jar包,替换掉集群上的fe目录下的palo-fe.jar

5.(重点)备份所有节点meta_dir目录,同时在相同路径下新建一个空的meta_dir

6.找到集群FE的master节点,在fe.conf中添加metadata_failure_recovery=true配置。注意:如果你的FE节点有3个,不确定哪个是FE的master时,那么可以通过查看meta_dir/image下的image文件,这个文件的后缀越大,则表示元数据更新。

7.在该FE节点下执行sh bin/start_fe.sh启动FE。这一步如果没有报错,那该FE节点基本就会是以master的角色启动了,你可以在日志中看到类似transfer from XXXX to MASTER的日志输出。

8.启动完成后,最好连接一下FE,然后通过一些查询和导入命令检查一下节点是否能够正常访问,如果不能,则可以仔细阅读官方文档,按照官网元数据恢复文档用备份的元数据再重试一次。

9.如果正常访问,则此时可以通过show frontends查看到之前添加的所有FE节点。

10.(重要)通过stop_fe.sh命令停掉当前FE节点,同时将fe.conf中的metadata_failure_recovery=true注释掉或者删除,然后再次重启这个FE节点。

11.再次连接到该FE,使用 alter system drop follower FeIp:9010 命令将其他FE节点全部删除掉。

12.使用 alter system add follower FeIp:9010 将重新启动的FE节点添加到集群中;

13.在其他FE节点使用sh bin/start_fe.sh --helper FeIp:9010 --daemon命令启动FE。

14.正常启动,开启所有接入任务。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值