一、升级说明
GaussDB T通过执行upgrade.py脚本对数据库进行版本升级,所有升级操作都使用安装GaussDB T数据库的操作系统omm用户登录服务器执行。
本示例将介绍GaussDB T 主备HA环境,如何从1.0.1版本升级至1.0.2版本,操作步骤只在一个节点执行。
二、升级注意事项
1、GaussDB T升级注意事项:
① 只支持相邻C版本之间的升级,因此需要确保目标版本和当前版本是否是相邻C版本。如果要升级到多个版本,需要依次升级。
② 在升级前根据需要备份重要的数据,建议进行一次全量备份。
③ 数据库所在环境的磁盘的预留空间不小于系统表文件所占空间(该预留空间供备份操作使用),否则升级失败。
④ 请确保数据库用户(以omm为例)对升级安装包具有一定的权限(≤0750),否则升级失败,需执行回滚。
⑤ 升级前确认数据库实例运行正常,可正常启停,可正常执行业务,否则升级失败,需执行回滚。
⑥ 升级前必须停止业务。
⑦ 确保没有其他控制软件(例如,CloudSOP、DBM等)对数据库进行实例关闭或拉起、主备切换、容灾、备份等操作,或者触发定时任务。否则升级可能失败,并且无法回滚。
2、对于主备HA升级,还需注意以下事项:
① 主备HA的升级必须在同一个主机节点执行。
② HA自动升级时,请确保主备之间网络正常,否则升级失败,需执行回滚。
③ HA自动升级时,需确保所有节点需要升级的实例的SYS用户的密码相同,否则升级失败。
④ HA自动升级时,各节点之间的互信情况需要一致,也就是说,各节点之间要么都有互信,要么都没有互信;各节点之间的互信情况不一致时,升级失败。
⑤ HA自动升级时,如果没有互信,需要保证所有节点上安装用户必须存在且家目录相同。
⑥ HA自动升级时,/etc/ssh/sshd_config中ChallengeResponseAuthentication的值必须是no,否则执行pre-check会失败。
三、升级前版本检查
升级前对主备数据库版本进行检查,如下:
主库:
[omm@gsdb01 ~]$ zsql / as sysdba -q
connected.
SQL> select * from v$version;
VERSION
----------------------------------------------------------------
GaussDB_100_1.0.1.B023 Release d92e025
ZENGINE
d92e025
3 rows fetched.
SQL> select name,status,open_status,database_condition,database_role from v$database;
NAME STATUS OPEN_STATUS DATABASE_CONDITION DATABASE_ROLE
---------- ---------- --------------- ------------------------- --------------------
YHGSDB OPEN READ WRITE NORMAL PRIMARY
1 rows fetched.
SQL> exit
[omm@gsdb01 ~]$
复制
备库:
[omm@gsdb02 ~]$ zsql / as sysdba -q
connected.
SQL> select * from v$version;
VERSION
----------------------------------------------------------------
GaussDB_100_1.0.1.B023 Release d92e025
ZENGINE
d92e025
3 rows fetched.
SQL> select name,status,open_status,database_condition,database_role from v$database;
NAME STATUS OPEN_STATUS DATABASE_CONDITION DATABASE_ROLE
---------- ---------- --------------- ------------------------- --------------------
YHGSDB OPEN READ ONLY NORMAL PHYSICAL_STANDBY
1 rows fetched.
SQL> exit
[omm@gsdb02 ~]$
复制
四、上传目标版本安装包
在主库下,使用omm用户上传目标版本安装包并解压,omm用户需要对目标版本安装包所在目录有读、写和执行权限。
[omm@gsdb01 ~]$ mkdir -p /u01/gaussdb/upgrade
[omm@gsdb01 ~]$ cd /u01/gaussdb/upgrade/
[omm@gsdb01 upgrade]$ ls -l
total 8200
-rwx------ 1 omm dbgrp 8395154 3月 5 18:10 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit.tar.gz
[omm@gsdb01 upgrade]$
[omm@gsdb01 upgrade]$ tar -xvf GaussDB_T_1.0.2-DATABASE-REDHAT-64bit.tar.gz
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/GaussDB_T_1.0.2-RUN-REDHAT-64bit.sha256
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/GaussDB_T_1.0.2-RUN-REDHAT-64bit.tar.gz
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/funclib.py
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/install.py
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/sshexkey.py
GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/upgrade.py
[omm@gsdb01 upgrade]$
[omm@gsdb01 upgrade]$ cd GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$ ls
funclib.py GaussDB_T_1.0.2-RUN-REDHAT-64bit.sha256 GaussDB_T_1.0.2-RUN-REDHAT-64bit.tar.gz install.py sshexkey.py upgrade.py
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$
复制
五、创建config_file.ini升级配置文件
创建升级配置文件config_file.ini,配置文件内容格式:IP=升级包绝对路径,GSDB_HOME目录,备份目录,GSDB_DATA数据目录。
注意:备份目录是升级过程中备份文件的存储路径,所有节点需要提前创建。
[omm@gsdb01 ~]$ mkdir -p /u01/gaussdb/upgrade/backup
[omm@gsdb01 ~]$ cd /u01/gaussdb/upgrade/
[omm@gsdb01 upgrade]$ vi config_file.ini
192.168.179.121=/u01/gaussdb/upgrade/GaussDB_T_1.0.2-DATABASE-REDHAT-64bit.tar.gz,/u01/gaussdb/app,/u01/gaussdb/upgrade/backup,/u01/gaussdb/data
192.168.179.122=/u01/gaussdb/upgrade/GaussDB_T_1.0.2-DATABASE-REDHAT-64bit.tar.gz,/u01/gaussdb/app,/u01/gaussdb/upgrade/backup,/u01/gaussdb/data
[omm@gsdb01 upgrade]$
复制
六、执行升级前环境检查
进入upgrade.py脚本所在目录,执行以下命令进行升级环境检查:
[omm@gsdb01 ~]$ cd /u01/gaussdb/upgrade/GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$ python upgrade.py -s pre-check --config-file=/u01/gaussdb/upgrade/config_file.ini --upgrade-mode=ha
Begin to precheck for ha upgrade.
Old version: 1.0.1.B023 New version: 1.0.2.B307.
Check connect to nodes.
omm@192.168.179.121's password: --输入omm用户密码
omm@192.168.179.122's password: --输入omm用户密码
Check database version.
Check node environment.
Send package to remote node.
Run pretest for upgrade.
Precheck for ha upgrade finished.
Upgrade [pre-check] step successfully.
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$
复制
七、执行升级
进入upgrade.py脚本所在目录,执行以下命令进行升级:
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$ python upgrade.py -s run --config-file=/u01/gaussdb/upgrade/config_file.ini --upgrade-mode=ha
Old version: 1.0.1.B023 New version: 1.0.2.B307.
Begin to run step for ha upgrade.
Precheck step for ha upgrade.
Prepare step for ha upgrade.
Replace step for ha upgrade.
Distribute the kmc keys to other nodes.
output:
attr:MOUNT
Start step for ha upgrade.
Upgrade step for ha upgrade.
Sync step for ha upgrade.
Dbcheck step for ha upgrade.
Flush step for ha upgrade.
Run for ha upgrade finished.
Upgrade [run] step successfully.
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$
复制
八、升级后检查
升级后启动主备数据库,检查升级后数据库信息:
主库:
[omm@gsdb01 ~]$ cd /u01/gaussdb/app/bin/
[omm@gsdb01 bin]$ python zctl.py -t start
Successfully started instance.
[omm@gsdb01 bin]$
[omm@gsdb01 bin]$ zsql / as sysdba -q
connected.
SQL> select * from v$version;
VERSION
----------------------------------------------------------------
GaussDB_T_1.0.2.B307 Release d4484ac
ZENGINE
2 rows fetched.
SQL> select name,status,open_status,database_condition,database_role from v$database;
NAME STATUS OPEN_STATUS DATABASE_CONDITION DATABASE_ROLE
---------- ---------- --------------- ------------------------- ------------------------------
YHGSDB OPEN READ WRITE NORMAL PRIMARY
1 rows fetched.
SQL> exit
[omm@gsdb01 bin]$
复制
备库:
[omm@gsdb02 ~]$ cd /u01/gaussdb/app/bin/
[omm@gsdb02 bin]$ python zctl.py -t start
Successfully started instance.
[omm@gsdb02 bin]$
[omm@gsdb02 bin]$ zsql / as sysdba -q
connected.
SQL> select * from v$version;
VERSION
----------------------------------------------------------------
GaussDB_T_1.0.2.B307 Release d4484ac
ZENGINE
2 rows fetched.
SQL> select name,status,open_status,database_condition,database_role from v$database;
NAME STATUS OPEN_STATUS DATABASE_CONDITION DATABASE_ROLE
---------- ---------- --------------- ------------------------- --------------------
YHGSDB OPEN READ ONLY NORMAL PHYSICAL_STANDBY
1 rows fetched.
SQL> exit
[omm@gsdb02 bin]$
复制
到此,主备HA的升级完成。
九、升级失败后回滚
如果在升级过程中失败需要回滚,操作如下:
- 进入upgrade.py脚本所在目录,执行以下命令进行回滚检查。
[omm@gsdb01 ~]$ cd /u01/gaussdb/upgrade/GaussDB_T_1.0.2-DATABASE-REDHAT-64bit/
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$ python upgrade.py -s rollback-check --config-file=/u01/gaussdb/upgrade/config_file.ini --upgrade-mode=ha
复制
- 执行回滚。
[omm@gsdb01 GaussDB_T_1.0.2-DATABASE-REDHAT-64bit]$ python upgrade.py -s rollback --config-file=/u01/gaussdb/upgrade/config_file.ini --upgrade-mode=ha
复制
显示“Upgrade [rollback] step successfully.”表示回滚成功。
回滚命令执行失败,需要查看/u01/gaussdb/upgrade/backup/ha_upgrade_backup中upgrade.log查看升级日志,解决问题后手动执行回滚后再次执行升级命令。