0 背景
在使用doris-1.2.0版本时发现BE节点无故宕机,自己尝试解决无果后再官网寻找解决方案,发现在doris-1.2.0版本中存在这样的隐患bug导致BE节点宕机。
而在咨询社区之后建议对doris进行升级,升级版本doris-1.2.4。该版本是解决1.2.x问题的修复版本
1 准备升级
1.1 下载1.2.4安装包
https://dist.apache.org/repos/dist/dev/doris/1.2.4-rc01/
注意:① 除下载BE和FE的安装包外,还需要下载1.2.4版本udf对应的依赖jar包
② 需要将下载好的udf的jar包(java-udf-jar-with-dependencies.jar)拷贝到be节点的lib目录下
1.2 备份FE节点元数据
fe元数据默认在fe/doris-meta目录下,压缩文件
tar -zcvf doris-meta.tar.gz dors-meta
1.3 备份BE节点数据
be元数据默认在be/storage目录下,压缩文件
tar -zcvf storage.tar.gz storage
1.4 准备工作
关闭集群副本修复和均衡功能,升级过程中会有节点重启,所以可能会触发不必要的集群均衡和副本修复逻辑。可以先通过以下命令关闭:
# 关闭副本均衡逻辑。关闭后,不会再触发普通表副本的均衡操作。
$ mysql-client > admin set frontend config("disable_balance" = "true");
# 关闭 colocation 表的副本均衡逻辑。关闭后,不会再触发 colocation 表的副本重分布操作。
$ mysql-client > admin set frontend config("disable_colocate_balance" = "true");
# 关闭副本调度逻辑。关闭后,所有已产生的副本修复和均衡任务不会再被调度。
$ mysql-client > admin set frontend config("disable_tablet_scheduler" = "true");
注意:升级完成后需要用同样的方法还原设置的值
2 测试BE升级正确性
① 任意选择一个 BE 节点,部署最新的 doris_be 二进制文件
② 重启 BE 节点,通过 BE 日志 be.INFO,查看是否启动成功
#先使用1.2.0版本的BE关闭该节点
/root/soft/doris/apache-doris-be-1.2.0-bin-x86_64-noavx2/bin/stop_be.sh
#注:1.2.4版本替换BE的lib目录以及bin目录,和除conf目录、数据目录BE的storage、log 目录外的其他目录。
#再使用1.2.4版本的BE启动该节点
/root/soft/doris-1.2.4/apache/apache-doris-be-1.2.4-bin-x86_64-noavx2/bin/start_be.sh
重新启动后发现BE成功加入集群
③ 如果启动失败,可以先排查原因。如果错误不可恢复,可以直接通过 DROP BACKEND 删除该 BE、清理数据后,使用上一个版本的 doris_be 重新启动 BE。然后重新 ADD BACKEND。(该方法会导致丢失一个数据副本,请务必确保3副本完整的情况下,执行这个操作!!!)
3 测试FE元数据兼容性
注意:重要!!元数据兼容性异常很可能导致数据无法恢复!!
① 单独使用新版本部署一个测试用的 FE 进程(建议在自己本地的开发机,或者BE节点。如果在Follower或者Observer节点上,需要停止启动的进程,但是不建议在Follower或者Observer节点上测试)。
② 修改测试用的 FE 的配置文件 fe.conf,将所有端口设置为与线上不同且priority_networks该为当前节点绑定的ip
③ 在 fe.conf 添加配置:cluster_id=123456
④ 在 fe.conf 添加配置:metadata_failure_recovery=true
⑤ 拷贝之前环境 Master FE 的元数据目录 doris-meta 到测试环境
⑥ 将拷贝到测试环境中的 doris-meta/image/VERSION 文件中的 cluster_id 修改为 123456(即与第3步中相同)
⑦ 在测试环境中,运行 sh bin/start_fe.sh 启动 FE
⑧ 通过 FE 日志 fe.log 观察是否启动成功
⑨ 如果启动成功,运行 sh bin/stop_fe.sh 停止测试环境的 FE 进程
使用Nvicate测试连接,发现新起的FE节点可以连接,且paloFe进程存在
关闭FE进程
4 升级
经过以上测试说明元数据在升级后的Doris-1.2.4版本中可用。
① 在完成数据正确性验证后,将 BE 和 FE 新版本的二进制文件分发到各自目录下
② 停止当前节点所有FE/BE进程
③ 版本升级需要替换 FE 和 BE 的 lib 目录以及 bin 目录,和除 conf 目录、数据目录(FE 的 doris-meta,BE 的 storage)、log 目录外的其他目录
④ 重新启动FE/BE
升级前doris版本
升级前数据库
升级后doris版本
升级后的数据
5 还原之前配置
新启动的Doris集群还原为之前的默认配置
# 开启副本均衡逻辑。
$ mysql-client > admin set frontend config("disable_balance" = "false");
# 开启 colocation 表的副本均衡逻辑。
$ mysql-client > admin set frontend config("disable_colocate_balance" = "false");
# 开启副本调度逻辑。
$ mysql-client > admin set frontend config("disable_tablet_scheduler" = "false");