升级概述
官方文档:doris.apache.org/zh-CN/docs/…
升级背景
Doris版本2.1.4 -->2.1.6
本次升级是为了解决大量的查询卡住导致的无法找到对应的tablet的BUG,如下图
此BUG在2.1.6版本fix,所以选择2.1.6版本作为此次升级版本。
目标机器
本次升级涉及14台服务器,38个节点(FE节点:3台,BE节点:35台)。
| 机器IP | 角色 | Doris版本 | 节点数量 |
|---|---|---|---|
| 172.16.71.160 | FE节点 | 2.1.4 | 1 |
| 172.16.71.161 | FE节点 | 2.1.4 | 1 |
| 172.16.71.162 | FE节点 | 2.1.4 | 1 |
| 172.16.24.12 | BE节点 | 2.1.4 | 4 |
| 172.16.24.13 | BE节点 | 2.1.4 | 4 |
| 172.16.24.14 | BE节点 | 2.1.4 | 4 |
| 172.16.24.68 | BE节点 | 2.1.4 | 4 |
| 172.16.24.98 | BE节点 | 2.1.4 | 4 |
| 172.16.24.144 | BE节点 | 2.1.4 | 4 |
| 172.16.24.145 | BE节点 | 2.1.4 | 4 |
| 172.16.24.152 | BE节点 | 2.1.4 | 4 |
| 172.16.24.147 | BE节点 | 2.1.4 | 1 |
| 172.16.24.148 | BE节点 | 2.1.4 | 1 |
| 172.16.24.149 | BE节点 | 2.1.4 | 1 |
升级流程
升级要点:
- 升级过程为保证集群处于正常工作状态,应采取滚动升级的方式进行升级。
- 集群副本修复和均衡功能在单次升级任务中务必要前置关闭和结束后打开。
- 本次升级从2.1.4 --> 2.1.6差距2个小版本,根据官方要求可以进行直接升级。
升级流程
-
准备所需升级文件 已完成
- 下载2.1.6版本Doris离线安装包
- 解压,提取fe/lib fe/bin,be/lib be/bin重新封包提升传输、解压速度,降低误操作概率
- 分发安装包
-
元数据测试 已完成无问题
- 拷贝fe元数据到测试环境doris-meta
- 依据这个环境的元数据启动fe,观察日志看是否有报错
-
元数据备份
- FE:meta目录备份
-
关闭集群副本修复和均衡功能
admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");
5. 升级BE
1. 停止节点supervisorctl stop doris\_be
2. 重命名bin、lib目录
3. 替换bin、lib目录
4. 启动节点supervisorctl start doris\_be
5. 检查节点加入集群状态
6. 升级FE(先完成其他节点升级,最后执行master节点升级)
1. 停止节点supervisorctl stop doris\_fe
2. 重命名bin、lib目录
3. 替换bin、lib目录
4. 启动节点supervisorctl start doris\_fe
5. 检查节点加入集群状态
7. 打开集群副本修复和均衡功能
admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");
回滚方案
BE节点升级失败回退
- 停止节点supervisorctl stop doris_be
- 回滚备份的bin、lib目录
- 重启节点supervisorctl stop doris_be
- 检查节点加入集群状态
FE节点升级失败回退
- 停止节点supervisorctl stop doris_fe
- 回滚备份的元数据
- 回滚备份的bin、lib目录
- 重启节点supervisorctl start doris_fe
- 检查节点加入集群状态
升级结果
BE:35台节点升级已完成
FE:3台节点升级
打开集群副本修复和均衡功能
admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");
相关指令
# BE的启停
supervisorctl stop doris_be
supervisorctl start doris_be
#
supervisorctl stop doris_fe
supervisorctl start doris_fe
# 关闭集群副本修复和均衡功能
admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");
# 打开集群副本修复和均衡功能
admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");