暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【最佳实践】MogDB 如何从 MogDB 5.0.3 版本升级至MogDB 5.0.4版本

由迪 2024-01-03
345

原作者:黄宸宁

适用范围

MogDB 5.0.3 升级 MogDB 5.0.4的场景

背景

  1. MogDB 5.0.4 版本发行时间:2023年11月25日
  2. MogDB 5.0.4 新增特性:无
  3. 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开关。

升级流程

img

步骤 建议起始时间 耗时(天/小时/分钟)
升级前准备与检查 升级操作前一天 约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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论