暂无图片
暂无图片
8
暂无图片
暂无图片
1
暂无图片

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

原创 szrsu 2024-11-07
2253

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

一、概述

1.1 升级方式的选择

openguass支持的升级方式主要有就地升级、灰度升级和指定节点升级。

升级方式的策略又分为大版本升级和小版本升级。版本号不变的升级方式为小版本升级,否则就是大版本升级。

就地升级:升级期间需停止业务进行,一次性升级所有节点 (6.0.0版本开始就地升级功能废弃,不再维护,即便升级参数指定为就地升级也会默认转换为灰度升级)。

灰度升级:灰度升级支持全业务操作,也是一次性升级所有节点。(openGauss1.1.0版本之后的版本支持该功能)

指定节点升级:基于灰度升级,支持升级指定节点,支持部分节点升级。(openGauss3.1.0版本之后的版本支持该功能)

本次选择灰度升级,一次性升级所有节点(一主一备)!!!

1.2 升级版本要求

升级路径图:

image.pngimage-20241107145349352

版本能否升级遵循以下两个原则:

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 升级流程

升级流程图:

image.png

升级预估时间:

步骤 建议起始时间 耗时(天/小时/分钟) 业务中断时长 备注
升级前准备与检查 升级操作前一天 约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/

image.png

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

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
复制

image.pngimage-20241107162027650

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
复制

image.png

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

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

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版本。实际操作过程中,可能会遇到各种问题,根据相应的报错去解决,相信一定能顺利完成升级的工作。

最后修改时间:2024-11-13 09:28:22
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

锁钥
暂无图片
6月前
评论
暂无图片 0
openGauss 一主一备 从5.0 LTS 版本升级至 6.0 LTS 版本实战
6月前
暂无图片 点赞
评论
目录
  • 一、概述
    • 1.1 升级方式的选择
    • 1.2 升级版本要求
    • 1.3 升级注意事项
    • 1.4 升级流程
  • 二、环境说明
  • 三、升级前的准备
    • 3.1 升级包下载
    • 3.2 备份数据
    • 3.3 升级前的检查
      • 3.3.1 java版本检查
      • 3.3.2 操作系统检查
      • 3.3.3 数据库的状态检查
  • 四、升级过程
    • 4.1 配置文件复制到升级目录
    • 4.2 升级前执行前置脚本
    • 4.3 执行升级脚本
    • 4.4 升级后验证
    • 4.5 提交升级