连升三级!openGauss单机版从2.1.0经停3.0.0升级至5.0.0

前言

如前文所述,我们的小demo项目起初安装了openGauss的2.1.0版本,由于2.1.0不是长期维护(LTS)版本,所以要升级到5.0.0LTS。考虑到虽然是DEMO项目,但也有些体验用户,所以为了保障业务连续性,决定还是按照升级的方式,而不采取卸载重装的方式。本篇从2.1.0经停3.0.0再到5.0.0版本升级过程的简要总结,供朋友们参考和指导。

升级路径:

官网对于从2.1.0到5.0.0的升级路径是不保证成功的,但是对于2.0.0的升级路径是支持的,可以从2.0.0到3.0.0,也可以从2.0.0直接到5.0.0,当然3.0.0也可以到5.0.0,如下图所示:

 

参考:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseOMGuide/%E5%8D%87%E7%BA%A7%E5%89%8D%E5%BF%85%E8%AF%BB.html 

下面开始升级的操作过程:

1. 查看数据库版本和状态信息

gs_om -t status --detail

gsql -p 26000 -d postgres -U omm 

gaussdb –V 

2. 检查OS

gs_checkos -i A (该命令需在root用户下执行,可选执行)

3. 检查数据库和表信息

 创建了一个demo项目用的数据库,以及用到的表,表里面有部分测试数据。

 

select count(1) from device;

4. 备份数据(商用环境务必执行,内部调测环境建议执行)

因升级如果失败,存在数据库不能启动且不能回退的风险,因此强烈建议备份数据,具体备份策略可根据实际业务情况确定。

5. 创建3.0.0版本升级目录目录命名可自行确定,建议见名知意

偷懒起见,我把5.0.0的升级目录也直接创建了,放在software目录下,可根据个人情况自行制定。

mkdir gaussdb_upgrade3.0.0

6. 下载3.0.0版本软件包

   进入创建好的3.0.0的目录: 通过wget下载3.0.0的软件包,注意查看操作系统及版本,制式正确。

wget:https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-3.0.0-openEuler-64bit-all.tar.gz 

注意尽管3.0.5是3.0.x最新的包但是由于3.0.5版本发布日期比5.0.0更晚,因此不支持3.0.5到5.0.0的升级路径。我刚开始用了这个包走了好多弯路,在HW朋友们的帮助和提醒下才后知后觉的了解到这点

7. 解压

(这部分和安装类似,就不做详细展开)

tar zxvf openGauss-3.0.0-openEuler-64bit-all.tar.gz
tar zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz

8. 执行preinstall

(这部分和安装类似,就不做详细展开)

进入script目录,执行preinstall命令,注意要用root用户执行:

./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml

执行过程会询问是否创建omm用户,回复yes。

 

9. 修改目录权限

如不修改会提示文件无访问权限。

chmod 755 -R /opt/software/gaussdb_upgrade3.0.0/

10. 执行升级过程

关于openGauss就地升级和灰度升级的区别,主要在于灰度升级的时候业务不中断。切换至omm用户,执行升级命令,注意确认路径在3.0.0。 

 

gs_upgradectl -t auto-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml --grey 

升级成功。

11. 检查升级效果

检查数据库版本:

 检查数据库和表存在:

 

12.  提交升级

若经过3.0.0升级至5.0.0,则一定要提交升级,否则在升级5.0的时候会报错。另外需注意,提交升级之后就不能再回退至升级前的版本了。

gs_upgradectl -t commit-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml

 

13. 再次查看数据库版本和状态信息

gs_om -t status –detail

---至此,版本已成功升级至3.0.0

14. 创建5.0.0版本升级目录

(过程上需要记录,但我们偷懒在前面已经一并创建了)

mkdir gaussdb_upgrade5.0.0

 

15. 下载5.0.0版本软件包

wget:https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-5.0.0-openEuler-64bit-all.tar.gz

仍然要确认好操作系统和版本以及制式。

16. 解压5.0.0软件包

tar zxvf openGauss-3.0.0-openEuler-64bit-all.tar.gz
tar zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz

17. 执行5.0.0 preinstall

(这部分和安装类似,就不做详细展开)

进入5.0.0的script目录,执行5.0.0的preinstall,注意要用root用户执行。

18. 修改目录权限

chmod 755 -R /opt/software/gaussdb_upgrade5.0.0/

19. 执行升级过程

(推荐灰度升级方式)

切换至omm用户,执行升级过程,确认目录:

gs_upgradectl -t auto-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml –grey

说明:命令格式和3.0.0的升级一样。 

20. 检查升级效果

检查数据库版本

 

 检查数据库和表数据

 

21. 检查无误后提交升级

gs_upgradectl -t commit-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml

22. 再次查看数据库版本和状态信息 

至此,数据库已经成功从2.1.0升级至5.0.0了,由于官网的不保证,升级之前还是很忐忑的,事实证明了openGauss实际是支持的,这是一种低调的实力。

说明:

  • 请大家忽略xml文件路径中5.0.1的干扰,整个过程和5.0.1没有关系,只是前面安装5.0.1版本时把xml文件放置在这个目录下,升级时懒得改了就没动。

  • 从2.1.0也可以越过3.0.0直接升级至5.0.0,按照文中的操作步骤略作调整也可实现,考虑篇幅所限不单独罗列了。

本文内容来自于数据库领域资深技术专家赵锋老师,希望我们的文章正好能解决你的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虚幻五关卡制作学习笔记

1.创建一个移动平台 这个移动平台的功能:从箭头1移动到箭头2来回移动,可移动时发绿光,不可移动时发红光 首先,创建两个材质,发红光和绿光 然后我们创建一个actor蓝图类,添加两个arrow组件,两个…

一文弄懂 Linux 系统调用函数之 exec 函数族

目录 简介函数原型参数说明返回值函数区别使用示例采用参数列表传递参数,以 execl 为例采用参数数组传递参数,以 execv 为例调用 PATH 下可执行文件,以 execlp 为例使用新的环境变量给新进程,以 execle 为例 更多内容 简介 exec …

22、Flink 背压下的 Checkpoint处理

1.概述 通常,对齐 Checkpoint 的时长主要受 Checkpointing 过程中的同步和异步两个部分的影响;但当 Flink 作业正运行在严重的背压下时,Checkpoint 端到端延迟的主要影响因子将会是传递 Checkpoint Barrier 到 所有的算子/子任务的时间&…

计算机毕业设计】springbootBBS论坛系统

本系统为用户而设计制作 BBS论坛系统,旨在实现BBS论坛智能化、现代化管理。本BBS论坛自动化系统的开发和研制的最终目的是将BBS论坛的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的便利和条件。使BBS论坛系统数字化…

什么是JVM中的程序计数器

在计算机的体系结构中: 程序计数器(Program Counter),通常缩写为 PC,是计算机体系结构中的一个寄存器,用于存储下一条指令的地址。程序计数器是控制单元的一部分,它的作用是确保程序能够按正确…

用python写个控制MicroSIP自动拨号和定时呼叫功能(可用在小型酒店叫醒服务)MicroSIP定时拨号

首先直接上结果吧,MicroSIP 助手,控制MicroSIP自动拨号,定时呼叫的非常实用小工具! 在使用MicroSIP 助手之前,我们需要了解MicroSIP是什么,MicroSIP是一个SIP拨号软件,支持注册任意SIP平台实现拨…

【Java难点】多线程-高级

悲观锁和乐观锁 悲观锁 synchronized关键字和Lock的实现类都是悲观锁。 它很悲观,认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会一不做二不休的先加锁,确保数据不会被别的线程修改。 适合写操作多的场景&…

1057: 有向图的出度计算

解法&#xff1a; #include<iostream> using namespace std; int arr[100][100]; int main() {int vertex, edge;cin >> vertex >> edge;int i, j;while (edge--) {cin >> i >> j;arr[i][j] 1;}for (int i 0; i < vertex; i) {int sum 0;…

乡村振兴与乡村环境综合整治:加强农村环境保护,开展农村环境综合整治行动,提升乡村环境质量,打造生态宜居的美丽乡村

目录 一、引言 二、乡村振兴背景下的乡村环境现状 1、乡村环境面临的挑战 2、乡村环境问题的成因 三、加强农村环境保护的重要性 1、促进乡村振兴 2、保障生态安全 3、提升居民生活质量 四、开展农村环境综合整治行动的策略 1、制定科学规划 2、加大投入力度 3、强…

在iPad中进行截图的两种方法,总有一种适合你

在iPad上截屏就像在iPhone设备上同时按下两个按钮一样简单,或者你可以使用另一种屏幕方法。以下是操作方法。 什么是屏幕截图 屏幕截图是对设备屏幕上内容的直接捕捉。使用屏幕截图,你可以捕捉你所看到的内容,然后将其保存以备日后使用或与他人共享,而无需使用相机拍摄设…

ICode国际青少年编程竞赛- Python-4级训练场-复杂嵌套for循环

ICode国际青少年编程竞赛- Python-4级训练场-复杂嵌套for循环 1、 for i in range(4):Dev.step(i6)for j in range(3):Dev.turnLeft()Dev.step(2)2、 for i in range(4):Dev.step(i3)for j in range(4):Dev.step(2)Dev.turnRight()Dev.step(-i-3)Dev.turnRight()3、 for i …

AI换脸原理(7)——人脸分割参考文献TernausNet: 源码解析

1、介绍 这篇论文相对来说比较简单,整体是通过使用预训练的权重来提高U-Net的性能,实现对UNet的改进。该方法也是DeepFaceLab官方使用的人脸分割方法。在介绍篇我们已经讲过了UNet的网络结构和设计,在进一步深入了解TernausNet之前,我们先简单回顾下UNet。 U-Net的主要结构…

趣味软件-吃什么(Eat What)?

&#x1f354;&#x1f35c;&#x1f355; 你是否也有这样的日常烦恼&#xff1f; 每天的“世纪难题”——今天吃什么&#xff1f; &#x1f570;️ 饭点到了&#xff0c;脑袋空空&#xff0c;选择困难症大爆发&#xff01; &#x1f46b; 和女朋友约会&#xff0c;却不知道她的…

nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame 打开题目是一个游戏界面 发现是有分数的&#xff0c;猜测分数达到某个之后可以获得flag&#xff0c;查看源码看一下 看到末尾显示分数超过65后显示flag 在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时&a…

WHAT - CSS Animationtion 动画系列(二)

目录 一、循环波浪二、关键帧呼应三、关键帧顺接四、利用 transform-origin 做拉伸五、大元素可拆分多个小元素联动六、预留视觉缓冲七、随机感&#xff1a;动画周期设置八、抛物线&#xff1a;两个内外div实现x和y向量运动 今天我们主要学习动画实现要素。 一、循环波浪 利用…

Nginx(简洁版)

基本配置 worker_processes 1; //默认为1&#xff0c;表示开启一个业务进程 events //事件驱动模块&#xff08;&#xff09;{worker_connections 1024; //单个业务进程可接受连接数 } http{include mime.types; // 引入http mime类型&#xff08;在外部已经定义好&#xff0c…

《视觉十四讲》例程运行记录(6)——运行ch9后端优化CeresBA和g2o求解BA的实践例程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、运行ch9的例程代码1. MeshLab安装2. 编译例程代码前的修改3. 编译例程 一、运行ch9的例程代码 1. MeshLab安装 (1) 软件中心安装 搜索&#xff1a;MeshLab&am…

HCIP的学习(14)

过滤策略—filter-policy ​ 思科中&#xff1a;分发列表 ​ 过滤策略是只能够针对于路由信息进行筛选&#xff08;过滤&#xff09;的工具&#xff0c;而无法针对于LSA进行过滤。 在R4的出方向上配置过滤策略&#xff0c;使得R1不能学习到23.0.0.0/24路由信息1、抓取流量 […

CSS学习笔记之基础教程(二)

上节内容CSS学习笔记之基础教程&#xff08;一&#xff09; 6、边距 6.1 外边距&#xff1a;margin 6.1.1 外边距 marginmargin-topmargin-leftmargin-bottommargin-right <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…

单链表经典算法LeetCode--203.移除链表元素(两种方法解)

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 分析此题提供两种思路&#xff1a; 1.遍历原链表&#xff0c;将值为val的节点释放掉&#xff08;双指针法&#xff09; 定义一个pcur指针指向头节点&#xff0c;定义一个prev指针指向NULL 需要注…