一、 背景
使用datasophon 管理 ,原来是doris-1.2.4版本 由于查询数据量不一致问题升级到doris-2.0.1版本
集群规划
两台fe 一个follower,一个observer,三台BE节点,两个台broker节点
二、 升级
参考官网升级
官网链接如下:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/cluster-management/upgrade?_highlight=%E5%8D%87%E7%BA%A7
官网下载doris-2.0.1
https://doris.apache.org/zh-CN/download
2.1 集群升级
概述
升级请使用本章节中推荐的步骤进行集群升级,Doris 集群升级可使用滚动升级的方式进行升级,无需集群节点全部停机升级,极大程度上降低对上层应用的影响
Doris 版本说明
提示
Doris 升级请遵守不要跨两个及以上关键节点版本升级的原则,若要跨多个关键节点版本升级,先升级到最近的关键节点版本,随后再依次往后升级,若是非关键节点版本,则可忽略跳过。
关键节点版本:升级时必须要经历的版本,可能是单独一个版本,也可能是一个版本区间,如 1.1.3 - 1.1.5
,则表示升级至该区间任意一版本即可继续后续升级。
示例:
当前版本为 0.12
,升级到 2.0.0-beta
版本的升级路线
0.12
-> 0.13
-> 0.14
-> 0.15
-> 1.1.3 - 1.1.5
任意版本 -> 1.2.0 - 1.2.5
任意版本 -> 2.0.0-beta
提示
LTS 版本:Long-time Support,LTS 版本提供长期支持,会持续维护六个月以上,通常而言,版本号第三位数越大的版本,稳定性越好。
Alpha 版本:内部测试版本,功能还未完全确定,或许存在重大 BUG,只推荐上测试集群做测试,不推荐上生产集群!
Beta 版本:公开测试版本,功能已基本确定,或许存在非重大 BUG,只推荐上测试集群做测试,不推荐上生产集群!
Release 版本:公开发行版,已完成基本重要 BUG 的修复和功能性缺陷修复验证,推荐上生产集群。
2.2 升级流程
升级流程概览
-
元数据备份
-
关闭集群副本修复和均衡功能
-
兼容性测试
-
升级 BE
-
升级 FE
-
打开集群副本修复和均衡功能
2.3 升级前置工作
请按升级流程顺次执行升级
元数据备份(重要)
将 FE-Master 节点的 doris-meta
目录进行完整备份!
关闭集群副本修复和均衡功能
升级过程中会有节点重启,所以可能会触发不必要的集群均衡和副本修复逻辑,先通过以下命令关闭
2.3.1 元数据备份
备份 FE-Master 节点的 doris-meta
目录进行完整备份!
查询是否为fe master节点
doris页面或者登录数据库都可以查询
cp -r doris-meta/ /tmp/
2.3.2 关闭集群副本修复和均衡功能
升级过程中会有节点重启,所以可能会触发不必要的集群均衡和副本修复逻辑,先通过以下命令关闭:
登录doris数据库执行如下命令:
admin set frontend config("disable_balance" = "true"); admin set frontend config("disable_colocate_balance" = "true"); admin set frontend config("disable_tablet_scheduler" = "true");
2.3.3 兼容性测试
FE 兼容性测试
建议在自己本地的开发机,或者 BE 节点做 FE 兼容性测试。 不建议在 Follower 或者 Observer 节点上测试,避免出现链接异常 如果一定在 Follower 或者 Observer 节点上,需要停止已启动的 FE 进程
单独使用新版本部署一个测试用的 FE 进程
我这里选择03节点be进行测试fe兼容性
1. 单独使用新版本部署一个测试用的 FE 进程 sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon 2.停止fe 3.修改以下端口信息,将所有端口设置为与线上不同 http_port = 18030 rpc_port = 19020 query_port = 19030 edit_log_port = 19010 4.在 fe.conf 添加 ClusterID 配置 echo "cluster_id=123456" >> ${DORIS_NEW_HOME}/conf/fe.conf 5.拷贝线上环境 Master FE 的元数据目录 doris-meta 到测试环境 cp ${DORIS_OLD_HOME}/fe/doris-meta/* ${DORIS_NEW_HOME}/fe/doris-meta 6.vi ${DORIS_NEW_HOME}/fe/doris-meta/image/VERSION clusterId=123456 7.在测试环境中,运行启动 FE sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon 8.通过 FE 日志 fe.log 观察是否启动成功 tail -f ${DORIS_NEW_HOME}/log/fe.log 9. 如果启动成功,则代表兼容性没有问题,停止测试环境的 FE 进程,准备升级
BE 兼容性测试
可利用灰度升级方案,先升级单个 BE,无异常和报错情况下即视为兼容性正常,可执行后续升级动作
2.4 开始升级
2.4.1 升级流程
先升级 BE,后升级FE 一般而言,Doris 只需要升级 FE 目录下的 /bin 和 /lib 以及 BE 目录下的 /bin 和 /lib 但是在大版本升级时,可能会有新的特性增加或者老功能的重构,这些修改可能会需要升级时替换/新增更多的目录来保证所有新功能的可用性,请大版本升级时仔细关注该版本的 Release-Note,以免出现升级故障
2.4.2 升级 BE
因为我们使用的就是三副本这里不做三副本修改
为了保证您的数据安全,请使用 3 副本来存储您的数据,以避免升级误操作或失败导致的数据丢失问题
1.在多副本的前提下,选择一台 BE 节点停止运行,进行灰度升级
我先选择03 节点BE
#先停止be sh /opt/datasophon/doris-1.2.4/be/bin/stop_be.sh
2.重命名 BE 目录下的 /bin
,/lib
目录
mv /opt/datasophon/doris-1.2.4/be/bin /opt/datasophon/doris-1.2.4/be/bin_back mv /opt/datasophon/doris-1.2.4/be/lib /opt/datasophon/doris-1.2.4/be/lib_back
3.复制新版本的 /bin
,/lib
目录到原 BE 目录下
首先将下载好的安装包解压然后进入be目录复制/bin
,/lib
cp -r ${DORIS_NEW_HOME}/be/bin /opt/datasophon/doris-1.2.4/be/ cp -r ${DORIS_NEW_HOME}/be/lib /opt/datasophon/doris-1.2.4/be/
4.启动该 BE 节点
sh /opt/datasophon/doris-1.2.4/be/bin/start_be.sh --daemon
启动时会遇到如下信息没启动
Please set the maximum number of open file descriptors to be 65536 using 'ulimit -n 65536'
执行ulimit -n 65536 重新启动
5.连接集群,查看该节点信息
#登录doris数据库 mysql -uroot -p -hip -P9030 #执行查看be信息命令 show backends\G
若该 BE 节点 alive
状态为 true
,且 Version
值为新版本,则该节点升级成功
6.依次完成其他 BE 节点升级
由于我是三台be 重复以上步骤就可以
2.4.3 升级FE
先升级非 Master 节点,后升级 Master 节点。
1.多个 FE 节点情况下,选择一个非 Master 节点进行升级,先停止运行
由于我时两台FE 01 02 02节点非master 选择02节点进行升级
sh /opt/datasophon/doris-1.2.4/fe/bin/stop_fe.sh
2.重命名 FE 目录下的 /bin
,/lib
,/mysql_ssl_default_certificate
目录\
注意: /opt/datasophon/doris-1.2.4 这个是我原来doris目录请改为你自己的
mv ${DORIS_OLD_HOME}/fe/bin /opt/datasophon/doris-1.2.4/fe/bin_back mv ${DORIS_OLD_HOME}/fe/lib /opt/datasophon/doris-1.2.4/fe/lib_back mv ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate /opt/datasophon/doris-1.2.4/fe/mysql_ssl_default_certificate_back
3.复制新版本的 /bin
,/lib
,/mysql_ssl_default_certificate
目录到原 FE 目录下
cp -r ${DORIS_NEW_HOME}/fe/bin /opt/datasophon/doris-1.2.4/fe/ cp -r ${DORIS_NEW_HOME}/fe/lib/opt/datasophon/doris-1.2.4/fe/ cp -r ${DORIS_NEW_HOME}/fe/mysql_ssl_default_certificate /opt/datasophon/doris-1.2.4/fe/mysql_ssl_default_certificate
4.启动该 FE 节点
sh /opt/datasophon/doris-1.2.4/fe/bin/start_fe.sh --daemon
5.连接集群,查看该节点信息
#登录doris数据库 mysql -uroot -p -hip -P9030 #执行如下命令 show frontends\G
若该 FE 节点 alive
状态为 true
,且 Version
值为新版本,则该节点升级成功
6.依次完成其他 FE 节点升级,最后完成 Master 节点的升级
2.4.4 打开集群副本修复和均衡功能
升级完成,并且所有 BE 节点状态变为 Alive
后,打开集群副本修复和均衡功能:
admin set frontend config("disable_balance" = "false"); admin set frontend config("disable_colocate_balance" = "false"); admin set frontend config("disable_tablet_scheduler" = "false");
三 、datasophon 页面控制doris
3.1 页面启停
1.将原来 bin_back里面的status_fe.sh status_be.sh 分别拷贝到fe 节点里面的bin目录以及be节点的bin目录
测试fe是可以页面启动
2.be 页面还启动不了 还需要在 be/bin/start_be.sh 中添加
ulimit -n 65536
-
所有be节点都修改后使用页面控制启动
3.2 修改文件夹1.2.4 为doris-2.0.1
1.
cd /opt/installd/datasophon-manager-1.1.1/conf/meta/DDP-1.1.1/DORIS
修改版本为2.0.1
vim service_ddl.json
"name": "DORIS", "label": "Doris", "description": "简单易用、高性能和统一的分析数据库", "version": "2.0.1", "sortNum": 20, "dependencies":[], "packageName": "doris-2.0.1.tar.gz", "decompressPackageName": "doris-2.0.1", "roles": [
重启datasophon-manager-1.1.1
cd /opt/installd/datasophon-manager-1.1.1 #执行 bin/datasophon-api.sh restart api
修改所有节点文件夹名字
mv doris-1.2.4/ doris-2.0.1
3.3 页面重启doris
注:这个ip也要改(如果不改就不要动)
然后ip修改完重启的话be和fe网段也要改
四、升级问题解决
4.1 Doris decimal类型保留两位小数的数据,后边突然多了好多0
原来的decimal 是decimalv2, 他实际是固定的precision 27 和 scale 9,可以通过schema change,把decimalv2 转换成decimalv3
alter table ads_xxx modify column export_goods decimalv3(20, 2)
五、升级过程中FE 启动失败(恢复流程)
参考链接
https://blog.csdn.net/hf200012/article/details/126817956?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169531544116800222822617%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169531544116800222822617&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-126817956-null-null.142^v94^insert_down1&utm_term=Apcahe%20Doris%20FE%E5%85%83%E6%95%B0%E6%8D%AE&spm=1018.2226.3001.4187
首先我是两台FE (元数据备份过,一台Follower(为master)一台Observer)
1.首先停掉集群
2.在所有 FE 的元数据目录下查看image/image.xxxx
3.找出image.xxxx 这个xxxx 数字最大的这个节点,这个数字最大说明这个节点的元数据是最新的
4.直接在conf/fe.conf 中加入 metadata_failure_recovery=true
,先回复Follower
5.在访问正常之后,将上面元数据恢复模式设置成false,或者将这个配置项注释掉
6.基于Observer 使用上面元数据恢复模式,将Follower 恢复正常之后
7.在MySQL 客户端或者命令行下连接Follower(Master)节点
8.执行下面的命令(将Observer从集群中删除掉)
ALTER SYSTEM DROP OBSERVER "OBSERVER_IP:9010"; 我的端口是9010 这里将所有的Observer从集群中删除掉 OBSERVER_IP:你要删除的Observer 节点IP PORT:fe.conf 中的 edit_log_port,默认9010
9.后到Observer 节点上,将Observer 元数据目录清空(先备份)只保留doris-meta
10.然后使用下面的命令启动Observer(主要是指定master节点)
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
11.在MySQL 客户端或者命令行下连接Follower(Master)节点执行下面的命令(添加Observer到集群中)
ALTER SYSTEM ADD OBSERVER "OBSERVER_IP:PORT"; 这里是你刚才启动Observer节点加入到集群中那个 OBSERVER_IP:你要加入的Observer 节点IP PORT:fe.conf 中的 edit_log_port,默认9010
12.查看FE运行状态
show fontends; 查看FE(Follower 和你刚才添加的 Observer 运行状态是否正常) 你也可以通过查看你刚才添加的Observer 的日志log/fe.log 观察是否启动正常