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

磐维数据库V2.0-S2.0.3升级V2.0-S3.0.2_B02实战

原创 飞天 2024-12-03
1031

一、背景

磐维数据库发布了V2.0-S3.0.2_B02版本,功能也得到了进一步完善。本文主要在测试环境中演示磐维数据库(B模式)从V2.0-S2.0.3_B01升级到V2.0-S3.0.2_B02的整个过程,方便大家在需要时参考查阅。

环境信息:

主机名 ip地址 OS版本 内存、CPU 节点角色 数据库端口 cmserver端口
node1 192.*.*.60 Centos7.9 4G 、 1个双核 主节点 17700 18800
node2 192.*.*.62 Centos7.9 4G 、 1个双核 从节点 17700 18800
node3 192.*.*.64 Centos7.9 4G 、 1个双核 从节点 17700 18800

二、升级前须知

由于升级期间需停止数据库运行,请提前规划业务中断窗口期。确保在业务中断窗口期内,数据库 License 未过期。

2.1 升级方式

升级前与升级后的 PanWeiDB 数据库为相同大版本时,版本内部补丁升级的方式选择如下表所示。
image.png

2.2 升级流程

1、升级前,用户需明确当前和目标 PanWeiDB 数据库版本并选择合适的升级方式。本步骤需完成升级前检查和备份数据、校验软件包等操作。
2、执行升级时,用户依据指南进行升级。
3、升级执行完成后用户需进行升级验证,验证升级后版本是否正确、系统是否正常等内容。
4、如升级验证不通过或升级失败,需要对升级操作进行回滚和还原。有关升级失败回滚的操作,请联系技术支持。
5、完成以上步骤后升级流程结束。

三、升级前检查(omm用户操作)

3.1 检查当前数据库版本

postgres=# select pw_version();
                                 pw_version                                  
-----------------------------------------------------------------------------
 (PanWeiDB_V2.0-S2.0.3_B01) compiled at 2024-05-25 22:37:21 commit e857234  +
  product name:PanWeiDB                                                     +
  version:V2.0-S2.0.3_B01                                                   +
  commit:e857234                                                            +
  openGauss version:5.0.0                                                   +
  host:x86_64-pc-linux-gnu
(1 row)

3.1.1 V2.0-S3.0.2_B01 升级说明

PanWeiDB V2.0-S3.0.2_B01 版本修复了系统视图 information_schema.sequences 查询缓慢的问题。升级到 PanWeiDB V2.0-S3.0.2_B01 的过程中会将 information_schema.sql_identifer 类型改为 name,因此需要重建该系统视图。
如果存在用户自建对象依赖于 information_schema.sql_identifer,则这些对象需要用户手动重新创建。
需要用户手动创建的对象可通过升级日志中的信息查看。查看方式:

cd $GAUSSHOME
ls -al .update  #PWPatch升级会在安装目录中创建一个名为.update 的隐藏目录,该目录用于存放升级日志
cd .update/updateLog/omm
grep 'CREATE view' gs_local*.log | grep -v information_schema\|sys.\|all_\|user\|dba_\|element_types\|dtd\|element_types'

注意:如果是PG 兼容模式升级,请联系技术支持获取升级前置脚本,或参阅《PanWeiDB V2.0_V3.0.2_B01 Release Notes》的升级注意事项章节。

3.2 检查license过期情况

# 临时license检查
[omm@node1 log]$ pw_licensetool  --view-temporary 
license info: Customer:'temporary license', Begins On:'2024-12-01 17:23:43', Expires On:'2025-03-01 17:23:43', MAC:''

# 如果申请了正式license,使用下面命令检查
pw_licensetool --dump= $license_dir

3.3 检查备份是否正常

[omm@node1 log]$ gs_probackup show -B /backup/probackup/

BACKUP INSTANCE 'panweidb'
=======================================================================================================================================
 Instance  Version  ID      Recovery Time           Mode  WAL Mode  TLI  Time   Data   WAL  Zratio  Start LSN  Stop LSN   Type  Status 
=======================================================================================================================================
 panweidb  9.2      SNV5ES  2024-12-01 19:04:09+08  FULL  STREAM    1/0   11s  717MB  16MB    0.98  0/A000028  0/A000270  FILE  OK     
 panweidb  9.2      SNV5B5  2024-12-01 19:02:02+08  FULL  STREAM    1/0   14s  717MB  16MB    0.98  0/8000028  0/8000270  FILE  OK  

3.4 检查数据库集群状态

[omm@node1 ~]$ gs_om -t status --detail
[  CMServer State   ]

node     node_ip         instance                         state
-----------------------------------------------------------------
1  node1 192.*.*.60  1    /data/panweidb/cm/cm_server Primary
2  node2 192.*.*.62  2    /data/panweidb/cm/cm_server Standby
3  node3 192.*.*.64  3    /data/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 192.*.*.60  6001 /data/panweidb/data P Primary Normal
2  node2 192.*.*.62  6002 /data/panweidb/data S Standby Normal
3  node3 192.*.*.64  6003 /data/panweidb/data S Standby Normal

3.5 检查磁盘空间使用率

df -h
建议数据库节点磁盘使用率低于 80% 时再执行升级操作。

3.6 数据库参数检查

升级前请检查以下数据库参数是否配置正确,避免影响数据库升级。

logging_collector=on
enable_prevent_job_task_startup =on
pw_exclude_reserved_words=''
plsql_show_all_error=off

测试环境中检查结果如下图,可以发现,enable_prevent_job_task_startup参数不满足要求:
image.png

修改enable_prevent_job_task_startup参数为off:

pw_guc reload -N all  -D /data/panweidb/data -c "enable_prevent_job_task_startup=on"

3.7 检查 xlog 目录是否正确

进入 $PGDATA 目录,查看 pg_xlog 目录是否指向正确位置。

cd $PGDATA
ls -al

3.8 字符集检查

升级前检查环境变量中的字符集设置,确保 LC_ALL 的字符集设置与 LANG 一致,如果不一致,修改 LC_ALL,避免影响数据库升级。

echo $LANG
echo $LC_ALL

测试环境中检查结果如下图,可以发现,两个环境变量不一致:
image.png

修改LC_ALL:

export LC_ALL=en_US.UTF-8

3.9 检查python环境

python -V

测试环境中检查结果如下图:
image.png
使用 pwpatch 升级需在 python3.7 环境下运行,即执行 python3 -V,返回版本为 3.7.* 。升级补丁包中也自带python3.7.9版本,在后面安装python3.7.9。

四、集群升级(omm用户操作)

4.1 停止数据库集群

4.1.1(可选)对于未进行环境隔离集群,需要备份 omm 用户的 .bashrc文件。

cp /home/omm/.bashrc /home/omm/bashrc.bak

4.1.2 备份当前数据库系统目录。

测试环境中数据库安装目录为 /data/panweidb,查看 GAUSSHOME和GPHOME :

[omm@node1 ~]$ echo $GAUSSHOME
/data/panweidb/app
[omm@node1 ~]$ echo $GPHOME
/data/panweidb/tool

备份目录:

mkdir -p /data/panweidb/bak/app
mkdir -p /data/panweidb/bak/tool
export BACKUPDIR=/data/panweidb/bak
cp -r $GAUSSHOME/bin $BACKUPDIR/app/bin
cp -r $GAUSSHOME/share $BACKUPDIR/app/share
cp -r $GAUSSHOME/lib $BACKUPDIR/app/lib
cp -r $GAUSSHOME/include $BACKUPDIR/app/include
cp -r $GPHOME $BACKUPDIR/tool
cp -r $GAUSSHOME/version.cfg $BACKUPDIR/

4.1.3 通过 gs_om 工具停止集群。

gs_om -t stop

image.png
查看集群状态,state 列为 Down 表示集群停止成功。

4.1.4 调整数据库配置

注释各节点的 postgresql.conf 文件中的 replconninfo 参数。

#replconnincfo = 'xxxxxxxxxxxxxxxxxxxxxxxxx' 
#replconninfo2 = 'xxxxxxxxxxxxxxxxxxxxxxxxx' ...

4.1.5 进行集群解耦。

4.1.5.1 注释数据库定时任务

crontab -e
在文件行前加井号(#),如下所示:
#*/1 * * * * source /etc/profile;(if [ -f ~/.profile ];then source ~/.profile;fi);source ~/.bashrc;nohup /data/panweidb/app/bin/om_monitor -L /data/panweidb/log/omm/cm/om_monitor >>/dev/null 2>&1 &
~

4.1.5.2 停止 om_monitor 进程,其中 $pid 表示进程号。

ps -ef | grep om_monitor
kill -9 $pid

4.1.6 修改数据库安装用户环境变量

本文以数据库安装用户为 omm 为例。

vi /home/omm/.bashrc
export PGUSER=omm
export LC_ALL=en_US.UTF-8

source /home/omm/.bashrc

测试环境中执行结果如下图:
image.png

4.2 升级数据库版本

本文以升级安装包(PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64.tar.gz)上传至/soft 目录为例。

4.2.1 解压安装包(root用户操作)

cd /soft
mkdir panwei302
tar -zxvf PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64.tar.gz -C /soft/panwei302/
cd panwei302/patch/
tar -zxvf PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64.tar.gz

解压后的目录如下图:
image.png
升级包的名称与解压后 patch 目录中需要解压的 patch 包名相同,请注意区分。

4.2.2 执行以下命令,生成 pwpatch 环境变量(root用户操作)

cd /soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script
source prepare_env.sh  #安装python3.7.9
./pwpatch --setparam -u omm -g dbgrp -a /data/panweidb/app -d /data/panweidb/data -p 17700 -t /data/panweidb/tmp

执行过程如下:
image.png
image.png

4.2.3 检查环境变量与配置(root用户操作)

./pwpatch -C

执行过程如下:
image.png

查看生成的xml文件:
image.png

4.2.4 升级前检查(root用户操作)

./pwpatch -P

image.png

4.2.5 使用 pwpatch 进行升级(omm用户操作)

su - omm
# export PWPATCH_CONFIGURATION_FILE=/data/panweidb/tmp/pwpatch.ini(如果手工配置了pwpatch 环境变量,这里需要设置)
# source ~/.bashrc
cd /soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script
./pwpatch --upgrade

执行过程如下:
image.png

4.2.6 清理 pwpatch 环境变量(omm用户操作)

./clean_env.sh 

4.2.7 查看升级过程中的日志

cd $GAUSSHOME/.update/updateLog/omm
ls -ltr

image.png

4.3 验证单节点启停

执行pwpatch --upgrade后,数据库是启动状态,可以直接登录。

gsql -r -d postgres 
\q
pw_ctl stop

执行过程如下:
image.png

4.4 升级 CM 版本

本节以升级所用的全量安装包(PanWeiDB_V2.0-S3.0.2_B02-install-centos_7-x86_64-no_mot.tar.gz)上传至 /soft 目录为例。

4.4.1 解压安装包(root用户操作)

cd /soft
mkdir panwei302cm
tar -zxvf PanWeiDB_V2.0-S3.0.2_B02-install-centos_7-x86_64-no_mot.tar.gz -C panwei302cm

执行过程如下:
image.png

4.4.2 分别将 cm 工具解压到数据库系统目录的 app 目录,将 om 工具解压到数据库系统目录的 tool 目录下,并替换 tool 目录下的version.cfg(root用户操作)

cd panwei302cm
source /home/omm/.bashrc
tar xvf PanWeiDB_V2.0-S3.0.2_B02-CentOS-64bit-cm.tar.gz -C $GAUSSHOME
tar xvf PanWeiDB_V2.0-S3.0.2_B02-CentOS-64bit-om.tar.gz -C $GPHOME
cp $GAUSSHOME/version.cfg $GPHOME/

image.png
将 cm 工具解压到数据库系统目录的 app 目录:
image.png
将 om 工具解压到数据库系统目录的 tool 目录下:
image.png
替换 tool 目录下的version.cfg:
image.png

4.4.3 将解压后的文件所有权授予 omm 用户(root用户操作)

cd /data/panweidb/
chown omm:dbgrp -R *

执行过程如下:
image.png

4.5 替换 OM 所需文件

OM 工具在进行集群扩容、集群卸载等步骤中需要用到内核安装包,因此在进行升级后,需要拷贝相应文件到对应目录。
下文以/data/panweidb/soft 为旧版本安装包解压目录,该目录会在安装数据库时被记录,对应环境变量 $UNPACKPATH;
/data/panweidb/tool 为 om 工具目录,对应环境变量 $GPHOME。

4.5.1 解压全量包到对应目录。

cd /data/panweidb/
# 删除以往替换 CM 所需文件遗留的 soft_bak 目录,如无可跳过
# rm -rf /data/panweidb/soft_bak
# 将升级前的安装包移动到 soft_bak 中
mv /data/panweidb/soft /data/panweidb/soft_bak
# 创建 soft 目录用于存放新版本安装包
mkdir /data/panweidb/soft
# 解压 om 包,其中 /soft/panwei302/pkg/* 表示 no-mot 包解压后的所有压缩包
cp -r /soft/panwei302cm/*  /data/panweidb/soft
tar -zxvf /data/panweidb/soft/*-om.tar.gz 
# 授予可执行权限
chmod 755 /data/panweidb/soft

image.png
image.png

4.5.2 替换升级后的安装包。

cd /data/panweidb/tool
# 删除旧版本安装包
rm -rf *cm.tar.gz *.tar.bz2 *.sha256
cp /soft/panwei302cm/*cm.tar.gz /data/panweidb/tool/
cp /soft/panwei302cm/*tar.bz2 /data/panweidb/tool/
cp /soft/panwei302cm/*om.tar.gz /data/panweidb/tool/
cp /soft/panwei302cm/*.sha256 /data/panweidb/tool/

4.5.3 替换 om 工具的 lib 包

cp -r /data/panweidb/tool/lib /data/panweidb/soft

修改/data/panweidb目录权限:

chown omm:dbgrp -R /data/panweidb

4.6 配置环境变量(可选)

su - omm
mv .bashrc .bashrc.upgrade
cp bashrc.bak .bashrc	

4.7 恢复集群环境(omm用户操作)

4.7.1 确认$GAUSSHOME 环境变量是否指向正确路径。

su - omm
echo $GAUSSHOME

image.png

4.7.2 使用 gs_om 工具恢复集群环境

找到最开始部署2.0.3集群的xml文件

ls -l /home/omm/cluster_config_template.xml

分发配置文件

gs_om -t generateconf -X cluster_config_template.xml --distribute

image.png
node1执行命令后,各个备节点(node2、node3)分发到了最新的静态配置文件:
node1:
image.png
node2:
image.png
node3:
image.png

4.7.3 恢复配置文件。

恢复 postgresql.conf 文件为升级前的配置。
vi postgresql.conf :

enable_prevent_job_task_startup = off
replconninfo='xxxxxxxxxxxxxxxxxxxxxxxxx' 
replconninfo2 = 'xxxxxxxxxxxxxxxxxxxxxxxxx' ...

4.7.4 恢复定时任务。

crontab -e

4.8 手工升级其它两台备库

操作步骤请参考4.1-4.7。

4.9 启动集群

gs_om -t start

image.png

4.10 检查集群状态

gs_om -t status --detail

image.png

4.11 检查数据库版本

select pw_version();

image.png

五、升级过程中碰到的问题

问题1:/pwpatch --setparam执行时提示 The environmental variable $PGDATA is empty. or variable has exceeded maximum length

[root@node1 script]# ./pwpatch --setparam -u omm -g dbgrp -a /data/panweidb/app -d /data/panweidb/data -p 17700 -t /data/panweidb/tmp
[GAUSS-51800] : The environmental variable $PGPORT is empty. or variable has exceeded maximum length
[root@node1 script]# ./pwpatch --setparam -u omm -g dbgrp -a /data/panweidb/app -d /data/panweidb/data -p 17700 -t /data/panweidb/tmp
[GAUSS-51800] : The environmental variable $PGDATA is empty. or variable has exceeded maximum length
解决办法:
vi /home/omm/.bashrc 
加入:
export PGPORT=17700
export PGDATA=/data/panweidb/data

问题2:pwpatch -P执行时提示 python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

[root@node2 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/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script/gs_preinstall' -U 'omm' -G 'dbgrp' -X '/data/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml' --non-interactive.
Traceback (most recent call last):
  File "./pwpatch", line 3072, in main
    func()
  File "./pwpatch", line 2223, in pwpatchPrepare
    + "Error:\n%s." % output)
Exception: [GAUSS-51400] : Failed to execute the command: python3 '/soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script/gs_preinstall' -U 'omm' -G 'dbgrp' -X '/data/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml' --non-interactive.Error:
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory.

[GAUSS-51400] : Failed to execute the command: python3 '/soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script/gs_preinstall' -U 'omm' -G 'dbgrp' -X '/data/panweidb/tmp/pw_cluster_omm_dbgrp_17700.xml' --non-interactive.Error:
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory.
原因:
   忘记执行/soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script/prepare_env.sh脚本
解决办法:
   sh /soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/script/prepare_env.sh
或者
export LD_LIBRARY_PATH=/soft/panwei302/patch/PanWeiDB_V2.0-S3.0.2_B02-patch-centos_7-x86_64/PWPatch/../python3/python3.7.9/lib:$LD_LIBRARY_PATH

六、升级总结

整个升级过程还比较顺利,再次提醒大家,在生产环境中升级前,务必按照文档中的步骤做好各项备份工作,以便在升级失败时能够快速回退到升级前的版本。

关于作者:
专注于Oracle、MySQL、PG、OpenGauss和国产数据库的研究,热爱生活,热衷于分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同进步~~~

最后修改时间:2024-12-04 14:56:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论