Apache-doris-2.0.2原地滚动升级3.1.4方案
文章目录
前置准备
JDK的升级
高版本Doris对JDK的版本有要求
连接器升级
需要检查使用的各类连接器的情况,重点
- 低版本的连接器是否可以正常读写高版本Doris
- 高版本的连接器是否可以正常读写低版本的Doris
举例 Flink连接器,Doris FE 返回的 schema 信息包含了 is_nullable 字段,之前使用的 Doris Flink Connector 版本较旧,其 org.apache.doris.flink.rest.models.Field 类只定义了 6 个字段:aggregation_type、type、name、precision、comment、scale,缺少 is_nullable 字段。
新版本安装包
-
apache-doris-3.1.4-bin-x64-noavx2.tar.gz -
jdk-17.0.12.tar.gz
其中
apache-doris-3.1.4-bin-x64.tar.gz和apache-doris-3.1.4-bin-x64-noavx2.tar.gz为是否支持avx2指令集的安装包。本文档使用apache-doris-3.1.4-bin-x64-noavx2.tar.gz进行升级。通过命令
cat /proc/cpuinfo | grep flags来查看当前CPU所支持的指令集,来确认Drios的安装包版本。主要看是否支持avx2。
升级步骤
一、安装新版本Doris
切换到 doris 用户,本文档后续操作均使用 doris 用户。
su - doris
解压包
shell
tar -zxf /data/install_package/jdk-17.0.12.tar.gz -C /home/doris/software/;
tar -zxf /data/install_package/apache-doris-3.1.4-bin-x64-noavx2.tar.gz -C /home/doris/software/
配置Doris文件
其中priority_networks建议配置成包含集群所有IP的网段/掩码,如相关IP均处于10.98...x.x段,即可配置为10.98.0.0/16
fe.conf
shell
vim /home/doris/software/apache-doris-3.1.4-bin-x64-noavx2/fe/conf/fe.conf
# 添加配置(使用ip a命令可获取)
priority_networks = 10.98.0.0/16
meta_dir=/data/doris/data/doris-meta
enable_fqdn_mode = true
LOG_DIR = /home/doris/logs
be.conf
shell
vim /home/doris/software/apache-doris-3.1.4-bin-x64-noavx2/be/conf/be.conf
# 添加配置(使用ip a命令可获取)
priority_networks = 10.98.0.0/16
storage_root_path=/data/doris/data/datastorage
LOG_DIR = /home/doris/logs
二、停止写入任务
该方案需要短暂停写
停止所有写入 doris 的任务,以免出现新老版本数据结构不一致损坏,升级过程中 doris 正常提供读服务。
三、原地停写滚动升级
升级过程具体流程如下:
- 关闭副本修复与均衡功能
- 升级 BE 节点
- 升级 FE 节点
- 打开副本修复与均衡功能
升级过程中,要遵循先升级 BE、在升级 FE 的原则。在升级 FE 时,先升级 Observer FE 与 Follower FE 节点,再升级 Master FE 节点。
1、关闭副本修复与均衡功能
在升级过程中会有节点重启,可能会触发不必要的集群均衡和副本修复逻辑,通过以下命令关闭:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'admin@007'
在 MysqlClient 中输入:
sql
admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");
2、三台BE滚动重启,切换软链
在多副本的集群中,选择一台 BE 节点停止进程,进行升级:
shell
cd /home/doris/software/doris/be;
sh bin/stop_be.sh
切换软链到高版本 JDK 和 Doris
shell
ln -snf /home/doris/software/jdk-17.0.12 /home/doris/software/java;
ln -snf /home/doris/software/apache-doris-3.1.4-bin-x64-noavx2 /home/doris/software/doris;
启动该 BE 节点:
shell
cd /home/doris/software/doris/be;
sh bin/start_be.sh --daemon
连接集群,查看该节点信息:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'admin@007'
在 MysqlClient 中输入:
sql
show backends
若该 BE 节点 alive 状态为 true,且 Version 值为新版本,则该节点升级成功。
注意:重启完第一台高版本 BE 节点后,剩余低版本 BE 节点数据结构不一致,过一段时间后进程会挂掉,这是正常情况,剩余的高版本 BE 单节点可以正常提供读服务,继续进行剩余 BE 节点升级。
3、滚动重启FE,先FOLLOWER,后Master
多个 FE 节点情况下,选择一个非 Master 节点进行升级,先停止运行:
shell
cd /home/doris/software/doris/fe;
sh bin/stop_fe.sh
使用命令可能会出现找不到 FE 进程,此时使用 jps 命令查询 FE 进程号,再用 kill 命令结束该 FE 进程
启动该 FE 节点:
shell
cd /home/doris/software/doris/fe;
sh bin/start_fe.sh --daemon;
连接集群,查看该节点信息:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'admin@007'
在 MysqlClient 中输入:
sql
show frontends
若该 FE 节点 alive 状态为 true,且 Version 值为新版本,则该节点升级成功。
依次完成其他 FE 节点升级,最后完成 Master 节点的升级
4、打开副本修复与均衡功能
升级完成,并且所有 BE 节点状态变为 Alive 后,打开集群副本修复和均衡功能:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'bigdata@123'
在 MysqlClient 中输入:
sql
admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");
四、重启写入任务
启动写入 doris 的任务,观察升级后的 doris 是否正常写入数据。