暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 一主一备 从5.0 TLS 版本升级至 6.0 TLS 版本实战

openGauss 2024-12-05
294
openGauss 6.0 LTS版本发布有一段时间了,手头刚好有一套 5.0 TLS 版本(一主一备), 给它们升级到 6.0 TLS 版本,刚好来体验一下新版本的变化。

概述

升级方式的选择

openguass支持的升级方式主要有就地升级、灰度升级和指定节点升级。
升级方式的策略又分为大版本升级和小版本升级。版本号不变的升级方式为小版本升级,否则就是大版本升级。
就地升级:升级期间需停止业务进行,一次性升级所有节点 (6.0.0版本开始就地升级功能废弃,不再维护,即便升级参数指定为就地升级也会默认转换为灰度升级)。
灰度升级:灰度升级支持全业务操作,也是一次性升级所有节点。(openGauss1.1.0版本之后的版本支持该功能)
指定节点升级:基于灰度升级,支持升级指定节点,支持部分节点升级。(openGauss3.1.0版本之后的版本支持该功能)
本次选择灰度升级,一次性升级所有节点(一主一备)!!!

升级版本要求

升级路径图:

版本能否升级遵循以下两个原则:
1.只能低版本升级到高版本。
2.按照发布时间,只能发布时间早的版本升级到发布时间晚的版本。
重点说明: 升级只保证LTS版本升级成功,创新版本不保证升级成功,优先推荐安装LTS版本,不推荐使用创新版上生产环境。

升级注意事项

升级影响和升级约束,具体内容详见官方文档说明: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
建议在升级前做好数据备份,就可以在风险发生后,尽快的恢复业务,另外升级过程建议在业务空闲时间点操作。

升级流程

升级流程图:

升级预估时间:

环境说明

当前环境如下:

当前是一主一备的openGauss 5.0.0版本,运行在银河麒麟的操作系统上。

升级前的准备

升级包下载

6.0 安装包下载地址:https://opengauss.org/zh/download/

安装包的选择这边要注意一下,对应的架构和操作系统不要选择错误,否则会导致升级失败。麒麟的系统要根据内核版本uname -r 选择对应的操作系统:4.19 -- 对应 openEuler 20.035.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


备份数据

提前备份数据,就可以在风险发生后,尽快的恢复业务。

升级前的检查

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

操作系统检查

使用安装包下的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_64bit

  A2. [ 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 Null
  A11.[ Network card configuration status ]                   : Warning    
      [slave]
BondMode Null
      Warning reason: network 'ens33' 'mtu' RealValue '1500' ExpectedValue '8192'

      [master]
BondMode Null
      Warning 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%时再执行升级操作。

数据库的状态检查

[omm@master ~]$ gs_om -t status
-----------------------------------------------------------------------

cluster_name   : dbCluster
cluster_state   : Normal
redistributing : No

-----------------------------------------------------------------------
确保当前的数据库状态正常。

升级过程

本次使用的灰度升级的方式,详细步骤如下:

配置文件复制到升级目录

将5.0的xml配置文件复制到6.0安装包路径下(文件不需要更改,所以其实可以用同一份,复制是为了安装时方便找到xml文件)
# cp opt/software/openGauss5.0/cluster_config.xml opt/software/openGauss6.0/

升级前执行前置脚本

在前面的升级前的准备,已经将升级包放到/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

执行升级脚本

切换至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

可以验证,在进行灰度升级时,数据库访问正常。

上面提示确认升级正常。升级完成后,我们需要先验证一下有没有问题,没有问题,再提交升级。

升级后验证

###新开一个窗口,主备节点都进行验证。
查看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代表数据库正常。

提交升级

升级完成后,如果验证也没问题。接下来就可以提交升级。
说明: 一旦提交操作完成,则不能再执行回滚操作。
[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,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论