openGauss 一主一备 从5.0 LTS 版本升级至 6.0 LTS 版本实战
openGauss 6.0 LTS版本发布有一段时间了,手头刚好有一套 5.0 LTS 版本(一主一备), 给它们升级到 6.0 LTS 版本,刚好来体验一下新版本的变化。
一、概述
1.1 升级方式的选择
openguass支持的升级方式主要有就地升级、灰度升级和指定节点升级。
升级方式的策略又分为大版本升级和小版本升级。版本号不变的升级方式为小版本升级,否则就是大版本升级。
就地升级:升级期间需停止业务进行,一次性升级所有节点 (6.0.0版本开始就地升级功能废弃,不再维护,即便升级参数指定为就地升级也会默认转换为灰度升级)。
灰度升级:灰度升级支持全业务操作,也是一次性升级所有节点。(openGauss1.1.0版本之后的版本支持该功能)
指定节点升级:基于灰度升级,支持升级指定节点,支持部分节点升级。(openGauss3.1.0版本之后的版本支持该功能)
本次选择灰度升级,一次性升级所有节点(一主一备)!!!
1.2 升级版本要求
升级路径图:
版本能否升级遵循以下两个原则:
1.只能低版本升级到高版本。
2.按照发布时间,只能发布时间早的版本升级到发布时间晚的版本。
重点说明: 升级只保证LTS版本升级成功,创新版本不保证升级成功,优先推荐安装LTS版本,不推荐使用创新版上生产环境。
1.3 升级注意事项
升级影响和升级约束,具体内容详见官方文档说明:https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseOMGuide/%E5%8D%87%E7%BA%A7%E5%89%8D%E5%BF%85%E8%AF%BB.html
建议在升级前做好数据备份,就可以在风险发生后,尽快的恢复业务,另外升级过程建议在业务空闲时间点操作。
1.4 升级流程
升级流程图:
升级预估时间:
步骤 | 建议起始时间 | 耗时(天/小时/分钟) | 业务中断时长 | 备注 |
---|---|---|---|---|
升级前准备与检查 | 升级操作前一天 | 约2~3小时。 | 对业务无影响。 | 升级前检查和备份数据、校验软件包等操作。 |
升级操作 | 业务空闲期 | 耗时主要集中在数据库的启动和停止以及每个database的系统表修改处。升级操作耗时一般不会超过30分钟。 | 与操作时长一致,一般不会超过30分钟。 | 依据指导书开始升级。 |
升级验证 | 业务空闲期 | 约30分钟。 | 与操作时长一致,约30分钟。 | - |
提交升级 | 业务空闲期 | 提交升级耗时一般不超过10分钟。 | 与操作时长一致,一般不超过10分钟。 | - |
升级版本回滚 | 业务空闲期 | 版本回滚耗时一般不会超过30分钟。 | 与操作时长一致,一般不会超过30分钟。 | - |
二、环境说明
当前环境如下:
角色 | 主机名 | IP地址 | 操作系统版本 | 数据库版本 |
---|---|---|---|---|
主 | master | 10.10.10.165 | Kylin Linux V10 | openGauss 5.0.0 |
从 | slave | 10.10.10.166 | Kylin Linux V10 | openGauss 5.0.0 |
当前是一主一备的openGauss 5.0.0版本,运行在银河麒麟的操作系统上。
三、升级前的准备
3.1 升级包下载
6.0 安装包下载地址:https://opengauss.org/zh/download/
安装包的选择这边要注意一下,对应的架构和操作系统不要选择错误,否则会导致升级失败。麒麟的系统要根据内核版本uname -r 选择对应的操作系统:
4.19 – 对应 openEuler 20.03
5.10 – 对应 openEuler 22.03
当前的环境的内核版本为4.19,所以选择openEuler 20.03 LTS
[root@master etc]# uname -r
4.19.90-52.15.v2207.ky10.x86_64
下载后的安装包,拷贝到/opt/software/openGauss6.0目录
# mkdir /opt/software/openGauss6.0拷贝安装包到/opt/software/openGauss6.0目录下# cd openGauss6.0/
[root@master openGauss6.0]# ls
openGauss-All-6.0.0-openEuler20.03-x86_64.tar.gz
[root@master openGauss6.0]# tar -xf openGauss-All-6.0.0-openEuler20.03-x86_64.tar.gz
[root@master openGauss6.0]# tar -xf openGauss-OM-6.0.0-openEuler20.03-x86_64.tar.gz [root@master openGauss6.0]# chown -R omm.dbgrp /opt/software/openGauss6.0/
[root@master openGauss6.0]# ls -lrt
total 304868
-rw------- 1 omm dbgrp 564488 Sep 29 18:56 upgrade_sql.tar.gz
-rw------- 1 omm dbgrp 65 Sep 29 18:56 upgrade_sql.sha256
drwxr-x--- 11 omm dbgrp 4096 Sep 29 18:57 script
drwxr-x--- 19 omm dbgrp 4096 Sep 29 18:57 lib
-rw-r----- 1 omm dbgrp 35 Sep 29 18:57 version.cfg
-rw-r----- 1 omm dbgrp 24106389 Sep 29 18:57 openGauss-OM-6.0.0-openEuler20.03-x86_64.tar.gz
-rw-r----- 1 omm dbgrp 65 Sep 29 18:57 openGauss-OM-6.0.0-openEuler20.03-x86_64.sha256
-rw-r----- 1 omm dbgrp 109556000 Sep 29 18:59 openGauss-Server-6.0.0-openEuler20.03-x86_64.tar.bz2
-rw-r----- 1 omm dbgrp 65 Sep 29 18:59 openGauss-Server-6.0.0-openEuler20.03-x86_64.sha256
-rw-r----- 1 omm dbgrp 22539204 Sep 29 18:59 openGauss-CM-6.0.0-openEuler20.03-x86_64.tar.gz
-rw-r----- 1 omm dbgrp 0 Sep 29 18:59 openGauss-CM-6.0.0-openEuler20.03-x86_64.sha256
-rw-r--r-- 1 omm dbgrp 155382743 Nov 7 13:58 openGauss-All-6.0.0-openEuler20.03-x86_64.tar.gz
3.2 备份数据
提前备份数据,就可以在风险发生后,尽快的恢复业务。
3.3 升级前的检查
3.3.1 java版本检查
# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment Bisheng (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM Bisheng (build 25.312-b07, mixed mode)
java版本等于或高于JDK1.8
3.3.2 操作系统检查
使用安装包下的gs_checkos工具,对服务器的OS参数进行检查:
--使用root,运行gs_checkos工具
# cd /opt/software/openGauss6.0/script
# gs_checkos -i A -h master,slave --detail
Checking items:A1. [ OS version status ] : Normal [master]kylin_10_64bit[slave]kylin_10_64bitA2. [ Kernel version status ] : Normal The names about all kernel versions are same. The value is "4.19.90-52.15.v2207.ky10.x86_64".A3. [ Unicode status ] : Normal The values of all unicode are same. The value is "LANG=en_US.UTF-8".A4. [ Time zone status ] : Normal The informations about all timezones are same. The value is "+0800".A5. [ Swap memory status ] : Normal The value about swap memory is correct. A6. [ System control parameters status ] : Normal All values about system control parameters are correct.A7. [ File system configuration status ] : Normal Both soft nofile and hard nofile are correct. A8. [ Disk configuration status ] : Normal The value about XFS mount parameters is correct. A9. [ Pre-read block size status ] : Normal The value about Logical block size is correct.
BondMode NullA11.[ Network card configuration status ] : Warning [slave]
BondMode NullWarning reason: network 'ens33' 'mtu' RealValue '1500' ExpectedValue '8192'[master]
BondMode NullWarning reason: network 'ens33' 'mtu' RealValue '1500' ExpectedValue '8192'A12.[ Time consistency status ] : Warning [master]The NTPD not detected on machine and local time is "2024-11-07 14:16:20".[slave]The NTPD not detected on machine and local time is "2024-11-07 14:16:23".A13.[ Firewall service status ] : Normal The firewall service is stopped. A14.[ THP service status ] : Normal The THP service is stopped.
Total numbers:13. Abnormal numbers:0. Warning numbers:2.
检查服务器的OS参数的目的是为了保证数据库正常通过预安装,并且在安装成功后可以安全高效的运行,有报错的要处理一下,处理完再重新检查一下。
磁盘使用率检查:
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.3G 0 3.3G 0% /dev
tmpfs 8.0G 16K 8.0G 1% /dev/shm
tmpfs 3.3G 9.6M 3.3G 1% /run
tmpfs 3.3G 0 3.3G 0% /sys/fs/cgroup
/dev/mapper/klas-root 52G 11G 42G 20% /
tmpfs 3.3G 4.0K 3.3G 1% /tmp
/dev/sda1 1014M 177M 838M 18% /boot
tmpfs 667M 36K 666M 1% /run/user/0
数据库节点磁盘使用率低于80%时再执行升级操作。
3.3.3 数据库的状态检查
[omm@master ~]$ gs_om -t status
-----------------------------------------------------------------------cluster_name : dbCluster
cluster_state : Normal
redistributing : No-----------------------------------------------------------------------
确保当前的数据库状态正常。
四、升级过程
本次使用的灰度升级的方式,详细步骤如下:
4.1 配置文件复制到升级目录
将5.0的xml配置文件复制到6.0安装包路径下(文件不需要更改,所以其实可以用同一份,复制是为了安装时方便找到xml文件)
# cp /opt/software/openGauss5.0/cluster_config.xml /opt/software/openGauss6.0/
4.2 升级前执行前置脚本
在前面的升级前的准备,已经将升级包放到/opt/software/openGauss6.0目录,并进行解压。
切换到root用户下执行预安装preinstall(注意,因为当前环境是基于以前装过数据库的,所以omm用户已存在,preinstall脚本询问是否创建用户时输入no !!!):
# cd /opt/software/openGauss6.0
# script/gs_preinstall -U omm -G dbgrp -X cluster_config.xml
4.3 执行升级脚本
切换至omm用户
[root@master openGauss6.0]# su - omm
Last login: Thu Nov 7 14:35:50 CST 2024
执行gs_upgradectl脚本进行灰度升级
[omm@master ~]$ cd /opt/software/openGauss6.0/
[omm@master openGauss6.0]$ gs_upgradectl -t auto-upgrade -X cluster_config.xml --grey
在升级过程中如果出现异常会自动回滚,排查报错原因后再重新执行升级脚本。
在运行脚本时,另外开一个窗口,执行下列语句(每隔1s打印输出),观察openGuass在升级过程中是否正常运行:
while true;do
gsql -U omm -d postgres -p 15400 -c "select sysdate";
sleep 1;
done
可以验证,在进行灰度升级时,数据库访问正常。
上面提示确认升级正常。升级完成后,我们需要先验证一下有没有问题,没有问题,再提交升级。
4.4 升级后验证
###新开一个窗口,主备节点都进行验证。
查看gsql版本:
[omm@master ~]$ gsql -V
gsql (openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 18:39:52 commit 0 last mr
查看gaussdb版本:
[omm@master ~]$ gaussdb -V
gaussdb (openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 18:39:52 commit 0 last mr
查看数据库运行状态:
[omm@master ~]$ gs_om -t status
-----------------------------------------------------------------------cluster_name : dbCluster
cluster_state : Normal
redistributing : No-----------------------------------------------------------------------
查询结果的cluster_state为Normal代表数据库正常。
4.5 提交升级
升级完成后,如果验证也没问题。接下来就可以提交升级。
说明: 一旦提交操作完成,则不能再执行回滚操作。
[omm@master openGauss6.0]$ gs_upgradectl -t commit-upgrade -X /opt/software/openGauss6.0/cluster_config.xml
Start to do health check.
Successfully checked cluster status.
Start check CMS parameter.
Successfully cleaned old install path.
Commit upgrade succeeded.
通过以上步骤,我们顺利完成openGauss数据库从5.0.0版本升级到6.0.0版本。实际操作过程中,可能会遇到各种问题,根据相应的报错去解决,相信一定能顺利完成升级的工作。
关注我,学习更多的数据库知识!
喜欢这篇文章的人还喜欢:
《openGauss 一主一备 从5.0 LTS 版本升级至 6.0 LTS 版本实战》
《openGauss 6.0 主备切换 switchover和failover 实操》