VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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

  • 升级前一定要备份数据,升级失败会自动回滚,但存在回滚失败的风险,这种情况可能导致集群无法正常启动,为了保证数据安全性,请备份后再执行集群升级,可以使用增加一个备节点或整体备份的方式备份数据。

  • 升级期间需停止业务进行,一次性升级所有节点。所以建议在数据库系统空闲情况下进行升级,尽量避开业务繁忙的时间段(可按照经验判断,如节假日等)。

注意事项

  • 首先关注使用vpatch进行版本控制的注意事项参数检查字符集检查

  • 仅支持在集群主节点执行集群升级和回退操作。且由于用于回退的备份文件仅存储于执行了升级操作的节点上,所以回退操作只能在同一节点进行。

  • 不支持虚拟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

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

./vpatch -P --rollbackId=0

步骤5 在主节点使用集群安装用户(以vastbase为例)执行回退。

su - vastbase 
cd /home/vastbase/patch/2-2.2-10-92-702-9104-centos-7-x86-64-01/VPatch/script
./vpatch --rollback=0