连升三级!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,按照文中的操作步骤略作调整也可实现,考虑篇幅所限不单独罗列了。

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

<think>我们正在解决的是用户在使用华为云Ascend仓库时遇到的SSL证书验证错误: 错误信息:ERROR: cannot verify ascend-repo.obs.cn-east-2.myhuaweicloud.com&#39;s certificate Self-signed certificate encountered. 根据引用中提到的解决证书验证问题的方法,我们可以采用类似的思路: 引用[1]中提到,当连接到mirrors.tuna.tsinghua.edu.cn不安全时,使用wget加上`--no-check-certificate`参数跳过证书检查。 引用[2]引用[3]则通过修改docker的daemon.json配置文件来更换镜像源,但这里的问题不是镜像源,而是证书问题。 然而,用户当前的错误是遇到了自签名证书(Self-signed certificate),这意味着该站点的证书不是由受信任的证书颁发机构(CA)签发的,因此被系统视为不安全。 解决方案通常有两种思路: 1. 跳过证书验证(不推荐,因为存在安全风险,但简单直接) 2. 将自签名证书添加到系统的受信任证书中(推荐,但步骤稍多) 具体步骤: 方法一:跳过证书验证(快速但不安全) 在访问该仓库的命令中(如wget、curl、apt等)添加跳过证书验证的选项。 例如: - 使用wget:添加`--no-check-certificate`选项 - 使用curl:添加`-k`或`--insecure`选项 - 对于apt(如果apt源使用该仓库):不建议全局跳过,但可以临时修改配置文件(不安全,不推荐) 但是,用户的具体命令没有给出,所以需要根据实际命令来添加参数。 方法二:将自签名证书添加到受信任根证书(安全,推荐) 步骤: 1. 获取自签名证书 我们可以使用openssl命令从目标服务器获取证书: ```bash openssl s_client -connect ascend-repo.obs.cn-east-2.myhuaweicloud.com:443 -showcerts </dev/null 2>/dev/null|openssl x509 -outform PEM > huawei_ascend.crt ``` 或者,如果无法获取,可以联系华为云技术支持提供该证书。 2. 将证书复制到系统证书目录 ```bash sudo cp huawei_ascend.crt /usr/local/share/ca-certificates/ ``` 3. 更新证书存储 ```bash sudo update-ca-certificates ``` 4. 验证:再次执行访问该仓库的命令,应该不会出现证书错误。 方法三:临时设置环境变量(针对特定命令) 对于Python的pip,可以设置环境变量: ```bash export PIP_OPTIONS="--trusted-host ascend-repo.obs.cn-east-2.myhuaweicloud.com" ``` 然后使用pip安装时就会跳过对该主机的证书验证。 注意:方法二需要管理员权限,且对系统全局有效。方法一方法三只对当前命令有效。 根据用户的具体情况,如果是在使用apt-get更新或安装软件时遇到此错误,那么需要修改apt的配置文件: 在/etc/apt/sources.list.d/目录下找到对应的源文件,然后在源地址前添加`[trusted=yes]`,例如: 将原本的: deb https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/... ... 改为: deb [trusted=yes] https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/... ... 然后执行`sudo apt-get update`。 但是,请注意,这样会跳过对该源的证书验证,同样存在安全风险。 总结:推荐使用方法二,将证书添加到系统信任证书中,这样既安全又不会影响其他操作。 相关问题: 1. 如何查看Linux系统已安装的受信任证书? 2. 如何为curl命令永久跳过特定主机的证书验证? 3. 在Ubuntu中如何移除已添加的自签名证书?</think>### 解决华为云 Ascend 仓库 SSL 证书验证错误 当遇到 `ERROR: cannot verify ascend-repo.obs.cn-east-2.myhuaweicloud.com&#39;s certificate Self-signed certificate encountered` 错误时,可通过以下方法解决: --- #### 方法一:跳过证书验证(临时方案) 在命令中添加 `--no-check-certificate` 参数: ```bash wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/... --no-check-certificate ``` 或 ```bash curl -k https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/... ``` > **适用场景**:快速测试或非敏感操作 > **风险**:跳过安全验证,存在中间人攻击风险[^1] --- #### 方法二:添加证书到信任列表(推荐方案) 1. **下载证书**: ```bash openssl s_client -connect ascend-repo.obs.cn-east-2.myhuaweicloud.com:443 -showcerts </dev/null 2>/dev/null|openssl x509 -outform PEM > huawei_ascend.crt ``` 2. **安装证书**: ```bash sudo cp huawei_ascend.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates ``` 3. **验证安装**: ```bash curl -v https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/ ``` > 观察输出中应出现 `SSL certificate verify ok` --- #### 方法三:配置系统级信任(长期方案) 修改全局 SSL 配置: ```bash sudo nano /etc/ssl/openssl.cnf ``` 在 `[v3_ca]` 部分添加: ```ini subjectAltName = DNS:ascend-repo.obs.cn-east-2.myhuaweicloud.com ``` --- #### 方法四:针对特定工具配置 **APT 包管理器**: ```bash sudo nano /etc/apt/apt.conf.d/99verify-ascend ``` 添加: ```conf Acquire::https::ascend-repo.obs.cn-east-2.myhuaweicloud.com::Verify-Peer "false"; Acquire::https::ascend-repo.obs.cn-east-2.myhuaweicloud.com::Verify-Host "false"; ``` --- ### 原理说明 此错误通常由以下原因引起: 1. **自签名证书**:服务器使用未通过公共 CA 认证的证书 2. **证书链不完整**:缺少中间证书 3. **域名不匹配**:证书中的 SAN (Subject Alternative Name) 未包含访问域名[^3] > **建议**:优先使用方法二,既保持安全性又解决验证问题。如为生产环境,建议联系华为云获取官方 CA 签名的证书。 --- ### 相关问题 1. 如何验证 SSL 证书的有效期签发机构? 2. 在 Docker 中如何解决类似的证书验证错误? 3. 自签名证书 CA 签名证书有哪些安全差异? 4. 如何为 Nginx 配置自定义 SSL 证书?[^2] [^1]: 跳过证书验证仅适用于测试环境,生产环境存在安全风险 [^2]: 修改系统级配置需谨慎操作,建议备份原始文件 [^3]: SAN 扩展确保证书支持多域名验证,是 HTTPS 安全的关键组件
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值