本文主要介绍了使用pwpatch工具将磐维数据库从2.0.2版本升级到2.0.3版本的过程。
1 升级须知
- 由于升级期间需停止数据库运行,请提前规划业务中断窗口期。
- 确保在业务中断窗口期内,数据库 License 未过期。
如安装了正式 License,则检查正式 License;如果没有正式 License,则查临时 License。
要检查 License 是否过期,使用 pw_licensetool 工具执行以下命令。
pw_licensetool { --view-temporary | --dump= $license_dir }
1.1 升级方式
升级前与升级后的 PanWeiDB 数据库为相同大版本时,版本内部补丁升级的方式选择如下表所示。
1.2 检查数据库版本
postgres=# select pw_version();
pw_version
-----------------------------------------------------------------------------
(PanWeiDB_V2.0-S2.0.2_B01) compiled at 2024-03-29 20:29:01 commit 2b900fc +
product name:PanWeiDB +
version:V2.0-S2.0.2_B01 +
commit:2b900fc +
openGauss version:5.0.0 +
host:x86_64-pc-linux-gnu
(1 row)
虚拟机环境中数据库版本为V2.0-S2.0.2_B01 ,因此使用pwpatch进行升级。
1.3 升级流程
1、升级前,用户需明确当前和目标 PanWeiDB 数据库版本并选择合适的升级方式。本步骤需完成升级前检查和备份数据、校验软件包等操作。
2、执行升级时,用户依据指南进行升级。
3、升级执行完成后用户需进行升级验证,验证升级后版本是否正确、系统是否正常等内容。
4、如升级验证不通过或升级失败,需要对升级操作进行回滚和还原。
5、完成以上步骤后升级流程结束。
1.4 注意事项
- 升级方式的选择与数据库版本有较大相关性,用户选择方式前应了解当前PanWeiDB 数据库的版本。
- 建议在数据库系统空闲情况下进行升级,尽量避开业务繁忙的时间段。
- 由于安装包名称变化,PanWeiDB 2.0.0 PSU1 版本 CM 无法识别 PanWeiDB V2.0-S2.0.2_B01 内核包,会影响扩容操作。因此需要升级 CM 版本。
- PanWeiDB 2.0.0 PSU1 版本中 CM 已知问题的修复需要进行 CM 升级。
- PanWeiDB V2.0-S2.0.3_B01 对应版本依赖库与 PanWeiDB 2.0.0 PSU1版本 CM 依赖存在差异。
2 升级前准备
2.1 检查数据库状态,确保数据库运行正常
[omm@node1 ~]$ pw_ctl status
[2024-07-17 09:15:18.384][973525][][pw_ctl]: pw_ctl status,datadir is /database/panweidb/data
pw_ctl: server is running (PID: 936290)
/database/panweidb/app/bin/panweidb "-D" "/database/panweidb/data" "-M" "primary"
2.2 检查数据库节点磁盘使用率
df -h
建议:数据库节点磁盘使用率低于 80% 时再执行升级操作。
2.3 数据备份
升级过程有可能会影响到业务的正常运行。提前备份数据,就可以在风险发生后,尽快的恢复业务。请参考《PanWeiDB V2.0-S2.0.3 管理员指南》->备份与恢复章节,完成数据备份。
建议:对行数据备份进行压缩,减少磁盘占用。
2.4 验证 2.0.3 安装包的md5
[root@node1 soft]# md5sum PanWeiDB_V2.0-S2.0.3_B01-install-bclinux_euler21.10-x86_64-no_mot.tar.gz
8a8a975f36328b590a07b546132d67d2 PanWeiDB_V2.0-S2.0.3_B01-install-bclinux_euler21.10-x86_64-no_mot.tar.gz
2.5 检查 python 环境
[root@node1 soft]# python3 -V
Python 3.7.9
3 集群升级方案
PanWeiDB V2.0-S2.0.2_B01 升级至 PanWeiDB V2.0-S2. 0.3_B01
在进行升级前,请确保已执行 2 升级前准备 相关操作。
说明:本文以数据库安装目录为 /database/panweidb 为例。
3.1停止数据库集群
1、备份配置文件
[omm@node1 ~]$ cp /home/omm/.bashrc /home/omm/bashrc.bak
2、备份数据库系统目录
mkdir -p /database/panweidb/bak/app
cp -r /database/panweidb/app/bin /database/panweidb/bak/app/bin
cp -r /database/panweidb/app/share /database/panweidb/bak/app/share
cp -r /database/panweidb/tool /database/panweidb/bak/app/tool
cp -r /database/panweidb/app/lib /database/panweidb/bak/app/lib
cp -r /database/panweidb/app/include /database/panweidb/bak/app/include
3、查看集群状态
[omm@node1 ~]$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
---------------------------------------------------------------------
1 node1 *.*.*.50 1 /database/panweidb/cm/cm_server Primary
2 node2 *.*.*.52 2 /database/panweidb/cm/cm_server Standby
3 node3 *.*.*.54 3 /database/panweidb/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : Yes
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
-----------------------------------------------------------------------
1 node1 *.*.*.50 6001 /database/panweidb/data P Primary Normal
2 node2 *.*.*.52 6002 /database/panweidb/data S Standby Normal
3 node3 *.*.*.54 6003 /database/panweidb/data S Standby Normal
4、停止集群
[omm@node1 ~]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
再次查看集群状态,state 列为 Down 表示集群停止成功。
gs_om -t status --detail
[omm@node1 ~]$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
---------------------------------------------------------------------
1 node1 *.*.*.50 1 /database/panweidb/cm/cm_server Down
2 node2 *.*.*.52 2 /database/panweidb/cm/cm_server Down
3 node3 *.*.*.54 3 /database/panweidb/cm/cm_server Down
cm_ctl: can't connect to cm_server.
Maybe cm_server is not running, or timeout expired. Please try again.
5、调整数据库配置。
cp -r postgresql.conf postgresql.conf.bak
5.1 修改各节点postgresql.conf 文件中的以下数据库参数:
logging_collector=on
enable_global_syscache=on
uppercase_attribute_name=off
enable_prevent_job_task_startup =on
5.2 注释各节点的 postgresql.conf 文件中的 replconninfo 参数。
#replconninfo1 = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
#replconninfo2 = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
6、进行集群解耦
注释各节点数据库定时任务。
[omm@node1 data]$ crontab -e
#*/1 * * * * source /etc/profile;(if [ -f ~/.profile ];then source ~/.profile;fi);source ~/.bashrc;nohup /database/panweidb/app/bin/om_monitor -L /database/panweidb/log/omm/cm/om_monitor >>/dev/null 2>&1 &
停止 各节点om_monitor 进程。
[omm@node1 data]$ ps -ef | grep om_monitor
omm 110739 1 0 Jul16 ? 00:09:13 /database/panweidb/app/bin/om_monitor -L /database/panweidb/log/omm/cm/om_monitor
omm 995776 989250 0 10:14 pts/0 00:00:00 grep --color=auto om_monitor
[omm@node1 data]$ kill -9 110739
[omm@node1 data]$ ps -ef | grep om_monitor
omm 995892 989250 0 10:16 pts/0 00:00:00 grep --color=auto om_monitor
7、修改环境变量。
vi ~/.bashrc 加入:
export PGUSER=omm
export LC_ALL=en_US.UTF-8
注意不动原来的环境变量。
3.2 数据库升级
本文以升级安装包上传至 /soft 目录为例。
解压软件包
[omm@node1 soft]$ tar zxvf PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64.tar.gz -C panwei203
[omm@node1 soft]$ cd panwei203/patch/
[omm@node1 patch]$ tar zxvf PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64.tar.gz
解压后的目录如下:
[omm@node1 patch]$ ll
total 384M
drwx------ 7 omm dbgrp 4.0K May 26 03:01 PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64
-rw------- 1 omm dbgrp 271 May 26 03:03 PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64.sh
-rw------- 1 omm dbgrp 384M May 26 03:03 PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64.tar.gz
注意:升级包的名称与解压后 patch 目录中需要解压的 patch 包名相同,请注意区分。
生成 pwpatch 环境变量。
[omm@node1 patch]$ cd /soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/PWPatch/script
[omm@node1 script]$ source prepare_env.sh
Make sure that environment variable PYTHONHOME is not set by current user. Otherwise, the upgrade may fail.
python3.7 path is /soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.7.9/bin/python3
set LD_LIBRARY_PATH=/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.6.15/lib:/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.7.9/lib
[omm@node1 script]$ ./pwpatch --setparam -u omm -g dbgrp -a /database/panweidb/app -d /database/panweidb/data -p 17700 -t /database/panweidb/tmp
It needs to be executed by root user!
切换到root用户下执行:
[root@node1 /]# cd /soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/PWPatch/script
[root@node1 script]# source prepare_env.sh
Make sure that environment variable PYTHONHOME is not set by current user. Otherwise, the upgrade may fail.
python3.7 path is /soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.7.9/bin/python3
set LD_LIBRARY_PATH=/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.6.15/lib:/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/python3/python3.7.9/lib
[root@node1 script]#
[root@node1 script]# ./pwpatch --setparam -u omm -g dbgrp -a /database/panweidb/app -d /database/panweidb/data -p 17700 -t /database/panweidb/tmp
The environment variable PWPATCH_CONFIGURATION_FILE is set to /database/panweidb/tmp/pwpatch.ini
查看生成的环境变量ini文件:
[root@node1 script]# cat /database/panweidb/tmp/pwpatch.ini
[pwpatch]
username = omm
usergroup = dbgrp
port = 17700
apppath = /database/panweidb/app
datapath = /database/panweidb/data
tmppath = /database/panweidb/tmp
使环境变量生效
[root@node1 script]# export PWPATCH_CONFIGURATION_FILE=/database/panweidb/tmp/pwpatch.ini
[root@node1 script]#
检查omm用户环境变量是否包含下面参数,如果没有就加入:
vi .bashrc
export GAUSSHOME=/database/panweidb/app
export PGUSER=omm
export PGPORT=17700
export PGDATA=/database/panweidb/data
检查环境变量与配置:
[root@node1 script]# ./pwpatch -C
Start checking.
Begin clearing temporary environment variables in the file (/home/omm/.bashrc).
Checking disk space.
Checking disk space successfully.
The cluster configuration file created is: /database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml.
Successful check ok!
升级前检查
[root@node1 script]# ./pwpatch -P
Before upgrading, please back up the original product and user data package, stop the database service, and maually detach the node from the cluster. The upgrade process may involve modifying the metadata and switching the upgrade mode. The service will be started during the upgrade process. Please specify a dedicated port number for the upgrade to avoid the upgrade process being affected by external commands. And do not put any backup files in the patch directory. Do not delete any files and directories generated by unzipping the patch tar package, and do not destroy the directory structure, including the outermost directory with the same name as the tar package, Do you want to continue the upgrade (please input yes or no):
yes
Begin preparing patch.
Successfully prepared patch.
Begin completing the link of the software.
Successfully completed the link of the software.
Begin preparing patches and environment variables.
Performing cmd: python3 '/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/PWPatch/script/gs_preinstall' -U 'omm' -G 'dbgrp' -X '/database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml' --non-interactive.
A1. [ OS version status ] : Abnormal
A2. [ Kernel version status ] : Normal
A3. [ Unicode status ] : Normal
A4. [ Time zone status ] : Normal
A5. [ Swap memory status ] : Normal
A6. [ System control parameters status ] : Normal
A7. [ File system configuration status ] : Normal
A8. [ Disk configuration status ] : Normal
A9. [ Pre-read block size status ] : Normal
A10.[ IO scheduler status ] : Normal
A11.[ Network card configuration status ] : Warning
A12.[ Time consistency status ] : Warning
A13.[ Firewall service status ] : Normal
A14.[ THP service status ] : Normal
Successfully prepared patches and environment variables.
Generate flag file preparation_succeeded.json ( /database/panweidb/tmp/preparation_succeeded.json ).
Successful prepare ok!
[root@node1 script]#
使用 pwpatch 进行升级(只升级主节点)
[root@node1 script]# su - omm
Last login: Mon Jul 29 21:02:05 CST 2024 on pts/0
[omm@node1 ~]$ cd /soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64/PWPatch/script
[omm@node1 script]$ ./pwpatch --upgrade
Perform pwpatch upgrade.
Upgrade instances under user omm and group dbgrp.
Regenerate profile. user: omm, group: dbgrp, clusterXml: /database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml.
Successfully regenerate profile. user: omm, group: dbgrp, clusterXml: /database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml.
Perform upgrade. clusterXml: /database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml.
Successfully upgrade.
Perform commit. clusterXml: /database/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml.
Successfully commit.
Begin clearing temporary environment variables in the file (/home/omm/.bashrc).
Start check.
Successfully perform pwpatch upgrade.
查看pw_cluster_omm_dbgrp_17700.xml文件:
[root@node1 tmp]# cat pw_cluster_omm_dbgrp_17700.xml
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<CLUSTER>
<PARAM name="clusterName" value="dbCluster"/>
<PARAM name="nodeNames" value="node1"/>
<PARAM name="backIp1s" value="127.0.0.1"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb/app"/>
<PARAM name="gaussdbLogPath" value="/database/panweidb/app_2b900fc/.update/updateLog"/>
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/soft/panwei203/patch/PanWeiDB_V2.0-S2.0.3_B01-patch-bclinux_euler21.10-x86_64"/>
<PARAM name="corePath" value=""/>
<PARAM name="clusterType" value="single_inst"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="node1">
<PARAM name="name" value="node1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="127.0.0.1"/>
<PARAM name="sshIp1" value="127.0.0.1"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data"/>
</DEVICE>
</DEVICELIST>
</Root>
[omm@node1 script]$ source ~/.bashrc
清理 pwpatch 环境变量:
[omm@node1 script]$ ./clean_env.sh
验证单节点启停:
[omm@node1 script]$ gsql -r
gsql ((PanWeiDB_V2.0-S2.0.3_B01) compiled at 2024-05-25 22:36:36 commit e857234 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
停止启动的单节点:
[omm@node1 script]$ ps -ef|grep panwei
omm 1047300 1 6 21:19 ? 00:00:35 /database/panweidb/app/bin/panweidb -D /database/panweidb/data -u 92923
omm 1048645 1008774 0 21:27 pts/0 00:00:00 grep --color=auto panwei
[omm@node1 script]$ pw_ctl stop
[2024-07-29 21:28:31.049][1048885][][pw_ctl]: pw_ctl stopped ,datadir is /database/panweidb/data
waiting for server to shut down..... done
server stopped
3.3 升级cm版本
本文以升级安装包上传至 /soft 目录为例。
解压安装包
cd /soft
[root@node1 soft]# mkdir panwei203cm
[root@node1 soft]# tar zxvf PanWeiDB_V2.0-S2.0.3_B01-install-bclinux_euler21.10-x86_64-no_mot.tar.gz -C panwei203cm
分别将 cm 工具解压到数据库系统目录的 app 目录,将 om 工具解压到数据库系统目录的 tool 目录下,并替换 tool 目录下的 version.cfg。
[root@node1 soft]# cd panwei203cm
[root@node1 panwei203cm]# tar xvf PanWeiDB_V2.0-S2.0.3_B01-bclinux-64bit-cm.tar.gz -C /database/panweidb/app
[root@node1 panwei203cm]# tar xvf PanWeiDB_V2.0-S2.0.3_B01-bclinux-64bit-om.tar.gz -C /database/panweidb/tool
[root@node1 panwei203cm]# cp /database/panweidb/app/version.cfg /database/panweidb/tool/
cp: overwrite '/database/panweidb/tool/version.cfg'? y
将解压后的文件所有权授予 omm 用户
[root@node1 panwei203cm]# cd /database/panweidb
[root@node1 panweidb]# chown omm:dbgrp -R *
[root@node1 panweidb]#
3.4 配置环境变量(可选)
已进行环境变量隔离的集群可以跳过本步骤。
对于未进行环境变量隔离的集群(如 OM 默认部署的集群),pwpatch 在升级过程中会在 .bashrc 清理环境变量,可能会导致缺少部分运行所需的环境变量,导致集群无法启动,OM 工具无法使用等现象。因此需要按照备份的环境变量修改.bashrc 文件。
[omm@node1 ~]$ mv bashrc.bak .bashrc
[omm@node1 ~]$ chmod +r .bashrc
[omm@node1 ~]$ ls -l .bashrc
-rw-r--r-- 1 omm dbgrp 857 Jul 17 09:50 .bashrc
使环境变量生效:
[omm@node1 ~]$ source ~/.bashrc
3.5 恢复集群环境
1 确认$GAUSSHOME 环境变量是否指向正确路径。
[omm@node1 ~]$ echo $GAUSSHOME
/database/panweidb/app
2 使用 gs_om 工具恢复集群环境。
[omm@node1 ~]$ gs_om -t generateconf -X panweidb1m2s.xml --distribute
Generating static configuration files for all nodes.
Creating temp directory to store static configuration files.
Successfully created the temp directory.
Generating static configuration files.
Successfully generated static configuration files.
Static configuration files for all nodes are saved in /database/panweidb/tool/script/static_config_files.
Distributing static configuration files to all nodes.
Successfully distributed static configuration files.
也可以替换备份的 cluster_static_config。
cp /database/panweidb/bak/app/bin/cluster_static_config $GAUSSHOME/bin
3 恢复配置文件。
cd $PGDATA
vi postgresql.conf
恢复 postgresql.conf 文件为升级前的配置。
logging_collector=off
enable_global_syscache=off
uppercase_attribute_name=on
enable_prevent_job_task_startup =off
replconninfo1 ='xxxxxxxxxxxxxxxxxxxxxxxxx'
replconninfo2 = 'xxxxxxxxxxxxxxxxxxxxxxxxx
4 恢复定时任务。
crontab -e
3.6 手工升级其它两台备库
操作步骤请参考3.1-3.5。
3.7 启动集群
cm_ctl start
3.8 查看集群状态
6
[omm@node1 ~]$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
---------------------------------------------------------------------
1 node1 *.*.*.50 1 /database/panweidb/cm/cm_server Primary
2 node2 *.*.*.52 2 /database/panweidb/cm/cm_server Standby
3 node3 *.*.*.54 3 /database/panweidb/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : Yes
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
-----------------------------------------------------------------------
1 node1 *.*.*.50 6001 /database/panweidb/data P Primary Normal
2 node2 *.*.*.52 6002 /database/panweidb/data S Standby Normal
3 node3 *.*.*.54 6003 /database/panweidb/data S Standby Normal
3.9 检查升级后数据库版本
[omm@node1 ~]$ gsql --version
gsql (PanWeiDB_V2.0-S2.0.3_B01) compiled at 2024-05-25 22:36:36 commit e857234
总结
总的来说,升级过程还是比较顺利的。
最后修改时间:2024-08-07 12:57:43
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。