VPatch集群升级
功能描述
VPatch支持对 HAS V2.0 集群的各节点进行 PSU/PSR 补丁就地升级,无需将集群还原为单机模式,可通过配置文件对集群各节点进行统一升级。
仅 VPatch V3.0.0 及以后版本支持 HAS V2.0 集群就地升级。数据库及平台支持情况如下:
数据库版本 | HAS版本 | CPU | 操作系统版本 |
---|---|---|---|
Vastbase G100 V2.2 Build 10 | HAS V2.0 | Intel x86_64 | CentOS 7.x |
![]()
升级前一定要备份数据,升级失败会自动回滚,但存在回滚失败的风险,这种情况可能导致集群无法正常启动,为了保证数据安全性,请备份后再执行集群升级,可以使用增加一个备节点或整体备份的方式备份数据。
升级期间需停止业务进行,一次性升级所有节点。所以建议在数据库系统空闲情况下进行升级,尽量避开业务繁忙的时间段(可按照经验判断,如节假日等)。
注意事项
仅支持在集群主节点执行集群升级和回退操作。且由于用于回退的备份文件仅存储于执行了升级操作的节点上,所以回退操作只能在同一节点进行。
不支持虚拟IP。
若集群所有节点的版本信息一致则允许升级,不一定要求历史版本一致。
若 HAS V2.0 集群任意节点应用过 OOP(one off patch) 补丁,则不允许该集群进行就地升级。
升级操作不能和扩容、缩容同时执行。
升级前要保证数据库正常。可以通过
gs_om -t status
查询,查询结果的cluster_state为Normal代表数据库正常。升级前要保证数据库互信正常,可以在集群的任意节点上通过执行
ssh hostname
命令,连接另外一个节点进行验证。若各节点间互连不用输入密码,说明互信正常(通常数据库状态正常时,互信一般都是正常的)。升级过程需要停止集群,若未停止集群,在检查时会提示用户。
升级前后,当前HAS V2.0集群的配置文件不能发生变化,否则将出现校验失败的情况。
在集群升级回退时,若指定回退的补丁编号在各节点不一致会导致无法回退。
回退时检查补丁包中的version.cfg,建议使用升级时使用的补丁包进行回退,如果使用同版本的其他补丁包执行回退,version.cfg需与回退后的目标版本一致。
回退过的补丁包不能再次用于升级或回退,再次使用需要重新解压压缩包文件。
若用户使用VPatch V2.0升级失败后不能直接使用VPatch3.0进行升级,因为二者的环境变量不一致,所以检查时会报错,必须进行环境清理才能使用VPatch3.0升级。
前提条件
使用vpatch进行集群就地升级需在python3.6环境下运行,即执行python3 --version,返回版本为3.6.* 。
![]()
在开始升级前,请检查解压的升级包的patch/***/VPatch/script/目录中是否存在prepare_env.sh和clean_env.sh脚本文件。
如果不存在上述两个文件,表示当前升级包中不包含python3.6的安装包,需要用户手动安装python3.6;
如果存在上述两个文件,表示当前升级包中已经包含了python3.6的安装包,此时使用root用户运行这两个脚本即可为当前用户安装卸载python3.6。
执行以下命令安装python3.6:
source prepare_env.sh
检查是否安装成功,返回版本为
3.6.*
,且确认使用的是补丁包自带的python时表示成功:python -V which python3
执行以下命令卸载python3.6:
sh clean_env.sh
卸载后当前连接窗口因为已经配置了python3的环境变量,执行
python3 -V
命令仍然返回 3.6.*,开启新的连接窗口后恢复安装前情况。
语法格式
命令行方式配置PSU/PSR升级选项:
vpatch --setparam -u userName -g group -p port -a appPath -d dataPath -t tmpPath --xml xml_conf_file
本操作要求在root用户下进行操作。
各配置项说明可参考如下ini文件格式。
ini配置文件方式配置PSU/PSR升级,ini文件格式如下:
[vpatch] userName=用户名user1 userGroup=用户组group1 appPath=产品软件目录 dataPath=数据库集簇的绝对路径 port=端口 tmpPath=升级过程临时文件目录 xml_conf_file=当前集群的XML配置文件
xml_conf_file指定的xml文件必须与HAS 2.0集群当前使用的配置文件保持一致,否则将出现校验失败的情况。可参见HAS V2.0安装部署的配置XML文件步骤。
示例
前置步骤
1、在集群各节点安装python3.6环境,可参考本小节的前提条件进行安装。
2、备份数据库数据目录。可参考备份与恢复。
3、登录数据库主节点,使用数据库安装用户解压补丁包,并切换进入script目录。
cd /home/vastbase/
tar xf PSU_9104_9662_centos-7_x86-64-****.tar.gz
cd patch
tar xf 2-2.2-10-92-702-9104-centos-7-x86-64-****.tar.gz
tar xf 2-2.2-10-92-702-9104-centos-7-x86-64-****.tar
cd 2-2.2-10-92-702-9104-centos-7-x86-64-****
cd /VPatch/script
4、若集群没有$PGUSER环境变量,则进行手动配置。
echo “export PGUSER=$USER”>> ~/.bashrc
source ~/.bashrc
示例1 HAS V2.0集群就地升级。
步骤1 停止集群。
1、使用集群安装用户(以vastbase为例)登录任意节点,执行以下命令查看主备状态。
su - vastbase
has_ctl query -Cvi
2、root用户登录主节点,执行以下命令停止主节点has服务。
has_ctl stop

步骤2 使用root用户登录主节点,指定vpatch.ini配置文件。
命令行方式指定配置参数
./vpatch --setparam -u userName -g group -p port -a appPath -d dataPath -t tmpPath --xml xml_conf_file
配置文件方式指定配置参数。其中-f需指定ini文件的所在目录,到文件级别(如下以vpatch.ini位于/home/vastbase目录下为例)。
vpatch --setparam -f /home/vastbase/vpatch.ini
步骤3 使用root用户登录主节点,进行升级环境检查。
./vpatch -C

步骤4 使用root用户登录主节点,进行升级用户权限检查。
./vpatch -P

步骤5 使用集群安装用户(以vastbase为例)登录主节点执行升级。
su - vastbase
cd /home/vastbase/patch/2-2.2-10-92-702-9104-centos-7-x86-64-****/VPatch/script
./vpatch --upgrade

步骤6 升级后进行升级信息检查。
./vpatch -U -c

示例2 HAS V2.0集群就地升级回退。
步骤1 停止集群。
1、使用集群安装用户(以vastbase为例)登录任意节点,执行以下命令查看主备状态。
su - vastbase
has_ctl query -Cvi
2、root用户登录主节点,执行以下命令停止主节点has服务。
has_ctl stop

步骤2 使用root用户登录主节点,指定vpatch.ini配置文件。
命令行方式指定配置参数
./vpatch --setparam -u userName -g group -p port -a appPath -d dataPath -t tmpPath --xml xml_conf_file
配置文件方式指定配置参数。其中-f需指定ini文件的所在目录,到文件级别(如下以vpatch.ini位于/home/vastbase目录下为例)。
vpatch --setparam -f /home/vastbase/vpatch.ini
步骤3 使用root用户登录主节点,进行升级环境检查。
![]()
操作记录号rollbackId的取值patch_record_id被记录在升级历史信息中,可使用./vpatch -U -s查看当前数据库中已打的补丁,回退时选择最后一个patch_record_id进行回退。
![]()
./vpatch -C --rollbackId=0