一、准备工作
1.概述
VPatch是用于Vastbase版本控制的工具。可以实现在单机环境下的升级和回退操作,具体功能如下:
-
升级环境检查,补丁冲突检查等。
-
PSU、PSR、OOP补丁的升级、回退、升级或回退失败时的还原。
-
升级过程中记录相关日志和步骤文件。
-
升级过程中管理备份文件。
-
自vpatch V2.0.0开始,支持在检查和回退时指定
--force
参数,用于对特殊的可回退升级包进行升级后的强制回退。强制回退表示对修改了函数和系统表的升级过程进行回退(若不指定--force
参数,则修改了函数和系统表的升级过程无法回退)。需要注意的是,强制回退可能导致数据丢失或读取错误,一般情况下不推荐使用本功能,或联系技术人员进行判断和操作。
PSU:月度补丁版本。
PSR:季度补丁版本。
OOP:One Off Patch,在单机环境下通过安装OOP升级包解决单个bug或增加小功能,OOP升级包的特点是升级包体量小,升级后版本号不会变化。
2.前提条件
使用vpatch升级需在python3.7环境下运行,即执行python3 --version
,返回版本为3.7.*
。
在开始升级前,请检查解压的升级包patch/VPatch/script/ 目录是否存在两个脚本文件 prepare_env.sh和clean_env.sh。
如果不存在上述两个文件,表示当前升级包中不包含python3.7的安装包,需要用户手动安装python3.7;
如果存在上述两个文件,表示当前升级包中已经包含了python3.7的安装包,此时使用root用户运行这两个脚本即可为当前用户安装卸载python3.7。
执行以下命令安装python3.7:
source prepare_env.sh
检查是否安装成功,返回版本为3.7.*
时表示成功:
python3 --version
执行以下命令卸载python3.7:
sh clean_env.sh
卸载后当前连接窗口因为已经配置了python3的环境变量,执行
python3 -V
命令仍然返回 3.7.*,开启新的连接窗口后恢复安装前情况。
注意事项
-
仅支持Vastbase G100 V2.2 Build 10及以上版本的升级。
-
对于集群的升级,需还原为单机模式进行,完成升级后重新部署集群。
-
强制回退可能导致数据丢失或读取错误,一般情况下不推荐使用本功能,或联系技术人员进行判断和操作。
-
在升级或回退前应关闭数据库服务。
-
升级时指定的端口号应避开日常使用的服务端口号,防止升级过程被外部干扰。
-
不支持修改用户数据升级的场景。用户数据指使用vb_initdb命令初始化后并未包含的、由用户操作产生的表。
-
仅支持未修改系统表且允许回退的补丁进行
rollback
和rollback to
回退操作。不支持修改过数据字典的场景进行rollback
和rollback to
回退操作。 -
不支持多实例场景。多实例场景即为单一产品对应多个数据库集簇的场景。
-
修改系统表的情况下不支持OOP,考虑进行PSU升级;
-
修改三方库的情况下不支持OOP,考虑进行PSU升级;
-
如有删除文件和新增文件的情况,目前OOP仅支持升级,无法回退,这种情况建议使用PSU升级。
-
一次升级的目标文件数建议为1~5个,在这个范围内升级是比较安全的。由于OOP体量小,在需要频繁打补丁的情况下,一次升级的目标文件数据越多,下一次升级补丁与前面的补丁出现冲突的可能会大幅增加,因此如果需要升级的目标文件超过10个,建议使用PSU升级,或者分批次升级。
-
升级过程中,检查和安装准备阶段会向数据库初始化用户的环境配置文件中写入环境变量,所以切换用户时若使用了不同的终端,为避免出现环境变量缺失的问题,需执行以下语句设置环境变量:
source .bashrc
3.数据库参数检查
升级前请检查以下数据库参数是否配置正确,避免影响数据库升级。
logging_collector=on
enable_global_syscache=on
uppercase_attribute_name=off
enable_prevent_job_task_startup =on
vb_exclude_reserved_words = ''
对于集群拆分成单节点升级的场景,需要在postgresql.conf中添加pgxc_node_name的值。
4.字符集检查
升级前检查环境变量中的字符集设置,确保LC_ALL的字符集设置与LANG一致,如果不一致,修改LC_ALL,避免影响数据库升级。
echo $LANG
echo $LC_ALL
使用英文字符集升级回退
检查环境变量,如下图所示:
若只有LANG,则在数据库安装用户的bashrc中设置:
vim ~/.bashrc
export LANG=en_US.UTF-8
二、执行升级
升级前请检查以下数据库参数是否配置正确,避免影响数据库升级。
logging_collector=on
enable_global_syscache=on
uppercase_attribute_name=off
enable_prevent_job_task_startup =on
vb_exclude_reserved_words = ''
关闭数据库
vb_ctl stop
备份数据库目录
cp -a /home/vastbase/local/vastbase_9104 /home/vastbase/local/vastbase_9104_bak
切换到数据库安装用户,把补丁包解压放入/home/数据库安装用户/目录,进入patch文件夹下解压升级包。
su - vastbase
cd /home/vastbase
tar xf PSU_9104_9662_centos-7_x86-64-01-20221109.tar.gz
cd patch
tar xf 2-2.2-10-92-702-9104-centos-7-x86-64-01.tar.gz
创建配置文件
/vastbase/a-Oracle/vastbase/vpatch.ini
[vpatch]
userName=vastbase
userGroup=vastbase
appPath=/vastbase/a-Oracle/vastbase
dataPath=/vastbase/a-Oracle/data
port=5432
tmpPath=/vastbase/a-Oracle/omTmp/tmp
使用root用户指定配置文件
cd /vastbase/a-Oracle/vastbase/patch/2-2.2-15-92-815-17408-centos-7-x86-64-2.0.0-02/VPatch/script
./vpatch --setparam -f /vastbase/a-Oracle/vastbase/vpatch.ini
返回结果如下表示成功:
使用root用户执行命令进行升级环境检查
./vpatch -C
返回结果如下表示成功
使用root用户执行命令进行用户权限检查
./vpatch -P
返回结果如下表示成功
切换数据库初始化用户进行升级
su - vastbase
cd /vastbase/a-Oracle/vastbase/patch/2-2.2-15-92-815-17408-centos-7-x86-64-2.0.0-02/VPatch/script
./vpatch --upgrade
升级完成后进行信息检查
./vpatch -U -s
查看数据库升级日志。显示升级过程信息,包含停止服务、启动服务操作、执行的每个脚本文件、操作数据库的相关命令、变更的设置参数等内容。
当升级失败时,可查看vpatch日志获取错误信息。
cat $GAUSSHOME/.update/updateLog/jq_vpatch_two/gs_upgradectlxxx.log