原作者:黄宸宁
适用范围
MogDB 5.0.3 升级 MogDB 5.0.4的场景
背景
- MogDB 5.0.4 版本发行时间:2023年11月25日
- MogDB 5.0.4 新增特性:无
- MogDB 5.0.4 修复缺陷
- 修复 SQL Bypass 特性返回数据不准
- 修复执行计划流程中使用某个元素为空指针导致宕机
- 修复开启慢 SQL捕获功能后,SQL 语句执行完毕后会将执行计划同步保存异常
升级步骤
升级影响和升级约束
- 升级操作不能和扩容、缩容同时执行。
- 不支持虚拟
- 升级过程中,不允许对wal_level,max_connections,max_prepared_transactions,max_locks_per_transaction这四个GUC参数的值进行修改。如果修改,会导致回滚后实例启动异常。
- 建议在数据库系统空闲情况下进行升级,尽量避开业务繁忙的时间段(可按照经验判断,如节假日等)。
- 升级前尽可能保证数据库正常。可以通过gs_om -t status查询,查询结果的cluster_state为Normal代表数据库正常。
- 升级前保证数据库互信正常,可以在任意节点上,通过ssh hostname命令,连接另外一个节点进行验证。如果各机器间互连不用输入密码,说明互信正常(通常数据库状态正常时,互信一般都是正常的)。
- 升级前后,数据库的部署方式(配置文件)不能发生变化。升级前会对部署方式进行校验,如果改变,会报错。
- 升级前要保证操作系统处于健康状态,通过gs_checkos工具可以完成操作系统状态检查。
- 就地升级需要停止业务,灰度升级支持全业务操作。
- 数据库运行正常且主DN的数据完全同步到备DN。
- 升级过程中不允许打开kerberos开关。
升级流程

| 步骤 | 建议起始时间 | 耗时(天/小时/分钟) |
|---|---|---|
| 升级前准备与检查 | 升级操作前一天 | 约2~3小时 |
| 升级操作 | 业务空闲期 | 耗时主要集中在数据库的启动和停止以及每个 database 的系统表修改处。升级操作耗时一般不会超过30分钟。 |
| 升级验证 | 业务空闲期 | 约30分钟 |
| 提交升级 | 业务空闲期 | 提交升级耗时一般不超过10分钟 |
| 升级版本回滚 | 业务空闲期 | 版本回滚耗时一般不会超过30分钟 |
升级操作
此次升级采用PTK方式,PTK 定义了一套完整的升级流程,但是升级的过程还依赖于高版本数据库安装包中提供的 upgrade_sql 包,如果在执行升级SQL的过程中存在异常,需要手动处理。
升级前需要先删掉whale 插件,如果在不同数据库中安装了whale 均需要删除。
删除 whale 插件
Whale 插件删除:
update pg_extension set extname = 'postgis' where extname = 'whale';
执行结果参考如下:
UPDATE 1
drop extension postgis cascade;
执行结果参考如下:
NOTICE: drop cascades to synonym whale.dual
DROP EXTENSION
注意:如有对象依赖whale插件提供对象cascade 将会级联删除。
确认是否删除插件,登录到各个数据库中执行
gsql -r
\dx
上传安装介质
将以下数据库升级所需的介质上传至目录/home/sysomm/mogdb5.0.4目录下
MogDB-5.0.4-Kylin-x86_64-all.tar.gz
whale-5.0.4-01-Kylin-x86_64.tar.gz
compat-tools-master_20231124.zip
更新 ptk 版本
PTK Version ≥ 1.0.9版本,如果 PTK Version < 1.0.9 版本,需要升级 PTK。
升级 PTK 操作如下:
cd /home/sysomm/mogdb5.0.4
tar -zxvf /home/sysomm/mogdb5.0.4/ptk_linux_x86_64.tar.gz -C /app/ptk
/app/ptk/ptk -v
执行结果参考如下:
PTK Version: v1.0.9 release
Go Version: go1.19.10
Build Date: 2023-09-28T20:21:30
Git Hash: 2f29ec9e
OS/Arch: linux/amd64
升级 mogdb
开始升级操作
/app/ptk/ptk ls
/app/ptk/ptk cluster upgrade -n cluster_26000 -p /home/sysomm/mogdb5.0.4/MogDB-5.0.4-Kylin-x86_64-all.tar.gz
执行结果参考如下:
执行结果参考如下:
INFO[2023-11-26T11:44:47.385] start cluster successfully
INFO[2023-11-26T11:44:47.385] finished: restart_dn_finally
INFO[2023-11-26T11:44:47.385] upgrade successfully
If you confirm upgrade no problem, you can run this to finish process:
ptk cluster -n cluster_26000 upgrade-commit
If you want to cancel upgrade, you can run this to rollback it:
ptk cluster -n cluster_26000 upgrade-rollback
INFO[2023-11-26T11:44:47.385] time elapsed: 45s
提交升级
/app/ptk/ptk cluster -n cluster_26000 upgrade-commit
执行结果,参考如下:
INFO[2023-11-26T11:45:09.201] clear temporary direcorys for upgrade
INFO[2023-11-26T11:45:09.315] commit success
INFO[2023-11-26T11:45:09.315] time elapsed: 5s
升级验证
验证步骤如下:
/app/ptk/ptk cluster -n cluster_26000 is-in-upgrade
返回 false 说明已提交升级,并且升级成功
gsql -r
sgedspdb=# show upgrade_mode ;
upgrade_mode
--------------
0
upgread_mode值参考:
0表示不在升级过程中。
1表示在就地升级过程中。
2表示在灰度升级过程中。
/app/ptk/ptk cluster status --all
执行结果参考如下:
==================== cluster: "cluster_26000" status ====================
[ Cluster State ]
cluster_name : cluster_26000
cluster_state : Normal
database_version : MogDB 5.0.4 (build 86d963ad)
重新安装 whale 插件
步骤如下:
cd /app/mogdb/5.0/plugins
mv whale whale5.0.0
tar -xzvf /home/sysomm/mogdb5.0/whale-5.0.4-01-Kylin-x86_64.tar.gz -C /app/mogdb/5.0/plugins
cd /app/mogdb/5.0/plugins/whale/
make install
gsql -r -d sgeregdb
create extension whale;
\dx
执行结果参考如下:
sgeregdb=# create extension whale;
CREATE EXTENSION
sgeregdb=# \dx
List of installed extensions
Name | Version | Schema | Description
-----------------+---------+------------+--------------------------------------------------
dist_fdw | 1.0 | pg_catalog | foreign-data wrapper for distfs access
file_fdw | 1.0 | pg_catalog | foreign-data wrapper for flat file access
hstore | 1.1 | pg_catalog | data type for storing sets of (key, value) pairs
log_fdw | 1.0 | pg_catalog | Foreign Data Wrapper for accessing logging data
mot_fdw | 1.0 | pg_catalog | foreign-data wrapper for MOT access
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
security_plugin | 1.0 | pg_catalog | provides security functionality
whale | 1.0 | public | Whale compatiable extension
(8 rows)
重新安装兼容性包
安装兼容性包过程如下所示:
cd /app/mogdb/5.0/plugins
mv compat-tools-master compat-tools-master_202311
unzip /home/sysomm/mogdb5.0.4/compat-tools-master_20231124.zip -d /app/mogdb/5.0/plugins
cd /app/mogdb/5.0/plugins/compat-tools-master/
gsql -d sgeregdb -c '\i uninstall.sql'
gsql -d sgeregdb -c '\i runMe.sql'
gsql -d sgeregdb -c '\dn' | grep compat_tools
其他操作
数据库参数修改
修改数据库参数,具体操作如下所示:
gs_guc reload -N all -I all -c "qrw_inlist2join_optmode= 'disable'"
回滚步骤
如果升级失败,请按照如下方式进行处理:
- 排查是否有环境问题。
如磁盘满、网络故障等,或者升级包、升级版本号是否正确。排除问题后,可以尝试重入升级。
- 如果没有发现环境问题,或者重入升级失败,需要收集相关日志,找原厂技术支持工程师定位。
PTK回滚步骤:
ptk cluster upgrade-rollback -n XXXX
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




