当前位置: 首页 > news >正文

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 升级版本要求

升级路径图:

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

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地址操作系统版本数据库版本
master10.10.10.165Kylin Linux V10openGauss 5.0.0
slave10.10.10.166Kylin Linux V10openGauss 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_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

image.png

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

关注我,学习更多的数据库知识!
请添加图片描述

喜欢这篇文章的人还喜欢:
《openGauss 一主一备 从5.0 LTS 版本升级至 6.0 LTS 版本实战》
《openGauss 6.0 主备切换 switchover和failover 实操》


http://www.mrgr.cn/news/68533.html

相关文章:

  • 基于CNN-LSTM的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码
  • 常见的排序算法(二)
  • 物流公司常用货物跟踪物流单打印查询统计软件操作教程
  • 二分答案—愤怒的牛-P1676 [USACO05FEB] Aggressive cows G
  • C语言比较两个字符串是否相同
  • 量化研究--年化57%全球动量模型策略回测,学习使用
  • MySQL的SQL书写顺序和执行顺序
  • XHCI 1.2b 规范摘要(14)
  • 用户裂变数据分析
  • Rust常用数据结构教程 序列
  • 2024年11月8日Github流行趋势
  • AI 大模型如何重塑软件开发:从代码生成到未来愿景
  • MySQL 按日查询数据
  • C++静态成员函数
  • 【Ant Design Pro】框架思维导图
  • 面试题:Spring(一)
  • 技术复杂性导致估算不准确?5大对策
  • 鸿蒙进阶篇-网格布局 Grid/GridItem(二)
  • clickhouse自增id的处理
  • Nginx独立项目相关配置说明
  • 时间管理应用(可复制源码)
  • uniapp 整合 OpenLayers - 测距测面
  • Linux的基本指令(一)
  • Vue 组件通信-自定义事件(七)
  • AI芯片:推动高性能计算场景的关键力量
  • etherlab更新了一版IGH1.6.5