在开始升级openGauss数据库之前,我们需要对当前环境进行全面的检查。这不仅包括数据库版本信息的确认,还需要检查系统资源、配置文件状态等关键要素。
首先通过gs_om工具查看集群状态和节点信息:
bash复制[omm@opengaussdb ~]$ gs_om -t status --detail
输出结果中我们需要特别关注:
集群配置文件cluster_config.xml包含了数据库部署的关键参数:
xml复制<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="dbCluster" />
<PARAM name="nodeNames" value="opengaussdb" />
<PARAM name="gaussdbAppPath" value="/openGauss/app" />
<PARAM name="gaussdbLogPath" value="/openGauss/log/omm" />
<PARAM name="tmpMppdbPath" value="/openGauss/tmp" />
<PARAM name="gaussdbToolPath" value="/openGauss/om" />
<PARAM name="corePath" value="/openGauss/corefile" />
<PARAM name="backIp1s" value="192.192.103.134"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="node1_hostname">
<PARAM name="name" value="opengaussdb"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.192.103.134"/>
<PARAM name="sshIp1" value="192.192.103.134"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/openGauss/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
重要提示:升级前务必备份此配置文件!虽然升级过程不会修改它,但出现意外情况时可能需要参考原始配置。
使用gs_checkos工具检查操作系统环境:
bash复制[root@opengaussdb ~]# gs_checkos -i A
检查结果中:
常见需要关注的项目包括:
由于升级过程中会有短暂的连接中断,建议:
建议在/opt/software目录下创建专门的升级目录:
bash复制[root@opengaussdb ~]# cd /opt/software/
[root@opengaussdb software]# mkdir -p upgrade
[root@opengaussdb software]# chown omm:dbgrp upgrade
将下载的升级包上传到该目录:
注意:确保升级包的版本与目标版本一致,且与当前操作系统兼容。
按顺序解压两个升级包:
bash复制[root@opengaussdb upgrade]# tar zxvf openGauss-All-6.0.3-CentOS7-x86_64.tar.gz
[root@opengaussdb upgrade]# tar zxvf openGauss-OM-6.0.3-CentOS7-x86_64.tar.gz
解压后会生成以下关键目录:
使用gs_preinstall进行升级前的准备工作:
bash复制[root@opengaussdb script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive
参数说明:
预安装主要完成以下工作:
常见问题:如果预安装过程中出现权限问题,请确保/opt/software/upgrade目录及其内容对omm用户可读写。
openGauss 6.0开始支持灰度升级模式,可以最小化业务影响:
bash复制[root@opengaussdb script]# su - omm -c "gs_upgradectl -t auto-upgrade -X /opt/software/openGauss/cluster_config.xml --grey"
参数说明:
灰度升级的特点:
升级过程中可以通过以下方式监控进度:
bash复制tail -f /openGauss/log/omm/upgrade_*.log
bash复制gs_om -t status --detail
bash复制top -u omm
关键检查点:
升级完成后,首先检查命令行工具版本:
bash复制[root@opengaussdb script]# su - omm -c "gsql -V"
[root@opengaussdb script]# su - omm -c "gaussdb -V"
然后连接数据库查询内部版本号:
sql复制testdb=# select working_version_num();
注意:此时如果不重启数据库,working_version_num()可能仍显示旧版本号,这是正常现象。
执行commit-upgrade确认升级完成:
bash复制[root@opengaussdb script]# su - omm -c "gs_upgradectl -t commit-upgrade -X /opt/software/openGauss/cluster_config.xml"
这个步骤会:
为了使所有变更生效,需要重启数据库:
bash复制[root@opengaussdb script]# su - omm -c "gs_om -t restart"
重启后再次确认版本号:
sql复制testdb=# select working_version_num();
此时应该与version.cfg文件中的版本一致:
bash复制[omm@opengaussdb upgrade]# cat version.cfg
基础功能检查:
性能检查:
sql复制EXPLAIN ANALYZE SELECT * FROM pg_class;
兼容性检查:
备份验证:
升级后可以考虑调整以下参数:
内存相关:
sql复制ALTER SYSTEM SET work_mem = '16MB';
ALTER SYSTEM SET maintenance_work_mem = '512MB';
并行查询:
sql复制ALTER SYSTEM SET max_parallel_workers = 8;
ALTER SYSTEM SET max_parallel_workers_per_gather = 4;
新版本特有参数:
sql复制ALTER SYSTEM SET enable_incremental_checkpoint = on;
问题1:gs_preinstall执行失败
可能原因:
解决方案:
bash复制# 检查并修复权限
chown -R omm:dbgrp /opt/software/upgrade
# 安装缺失依赖
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch
问题2:操作系统检查不通过
处理步骤:
查看详细检查结果:
bash复制gs_checkos -i A
根据报告修复Abnormal项
重新运行预安装
问题1:升级过程中断
处理方案:
查看错误日志:
bash复制cat /openGauss/log/omm/upgrade_*.log | grep ERROR
根据错误代码查询文档
可能需要回退后重新尝试
问题2:版本不一致
现象:gsql -V显示新版本,但working_version_num()仍是旧版本
解决方案:
问题1:性能下降
排查步骤:
收集统计信息:
sql复制ANALYZE;
检查执行计划变化
考虑回退或优化查询
问题2:功能不兼容
处理方案:
检查6.0.0的release notes
使用兼容性参数:
sql复制SET behavior_compat_options = 'display_leading_zero';
修改应用代码适配新版本
对于关键业务系统,我建议在升级后执行以下额外步骤:
在实际操作中,我发现以下技巧特别有用: