openGauss单机版升级示例(2.0.1—>3.1.1)

文章介绍了openGauss数据库从2.0.1到3.1.1的升级过程,包括升级前的准备工作,如备份、检查数据库状态,然后详细阐述了升级步骤,如查看当前版本、下载安装包、执行前置脚本gs_preinstall、使用gs_upgradectl进行升级、检查和提交升级,以及可能的回滚操作。同时,文章还提到了Linux下的tar和chmod命令用于解压文件和修改权限。

前言

数据库版本升级在日常工作虽然不是非常频繁,但却必不可少。主要涉及到DBA或者数据库运维人员,因为数据库版本升级在运维管理过程中是一项要求极高的工程,其对时效性、准确性、安全性等要求都非常高。 openGauss数据库3.1.1刚刚发布不久,本文就带大家简单了解一下openGauss数据库的单机版升级过程。

一、升级前的准备工作

1、用户根据openGauss提供的新特性和数据库现状,确定是否对现有系统进行升级。
2、本次实验采用就地升级:升级期间需停止业务活动(一次性升级所有节点)。
3、升级版本:可从低版本升级到高版本,本次是将openGauss 2.0.1升级到最新版本3.1.1 (单机架构)
4、数据库文件备份、业务数据备份。升级一旦失败,有可能会影响到业务的正常开展,提前备份数据,就可以在风险发生后,尽快的恢复业务。(本次不作为重点阐述)
5、升级流程图:
在这里插入图片描述

6、检查数据库状态:gs_om -t status ,保证在数据库处于正常状态下进行升级操作。
7、获取升级包:在opengauss网站获取对应版本的升级包。

二、升级主要步骤

1、查看当前数据库版本

切换到 su – omm 用户,执行命令 gsql –version
在这里插入图片描述

2、创建临时目录用于存放安装文件

mkdir -p /opt/software/gaussdb_upgrade
cd /opt/software/gaussdb_upgrade

在这里插入图片描述

3、下载最新需要升级的版本并解压

1)执行命令:

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.1/x86/openGauss-3.1.1-CentOS-64bit-all.tar.gz 

(说明:此过程,也可以手工在官网下载对应安装包,通过ftp上传到目标服务器路径上。)
在这里插入图片描述
2)解压:
执行命令:

tar –zxvf *

在这里插入图片描述
本次选择“openGauss-3.1.1-CentOS-64bit-om.tar.gz” 安装包。
执行命令:tar -zxvf openGauss-3.1.1-CentOS-64bit-om.tar.gz
在这里插入图片描述

4、执行前置脚本 openGauss的 gs_preinstall

在就地升级前执行前置脚本gs_preinstall。
1)进到解压后的目录:cd /opt/software/gaussdb_upgrade/script
2)执行命令:

./gs_preinstall -U omm -G dbgrp -X  /soft/openGauss/clusterconfig.xml 

如截图,提示“preinstallation succeeded” 则完成当前操作。
在这里插入图片描述

5、执行升级操作

切换至据库用户 su - omm,执行升级操作,这里采用就地升级:使用gs_upgradectl脚本执行就地升级。
执行命令:gs_upgradectl -t auto-upgrade -X /soft/openGauss/clusterconfig.xml
如截图,提示升级完成,等待检查及提交。
在这里插入图片描述

6、升级检查

1)查看版本,执行命令:gsql –version
当前数据库已经从2.0.1升级到3.1.1 版本了。
在这里插入图片描述

2)查看状态,执行命令:gs_om -t status ,当cluster_state 的值为 Normal, 则表示升级成功。
在这里插入图片描述

7、提交升级:

执行命令:

gs_upgradectl -t commit-upgrade -X  /soft/openGauss/clusterconfig.xml 

如截图,提交成功。
在这里插入图片描述

8、回滚
在一些特殊情况下,数据库需要回滚,可执行如下命令行:
1)正常回滚:
gs_upgradectl -t auto-rollback -X /soft/openGauss/clusterconfig.xml

2)强制回滚(如果回滚异常时)
gs_upgradectl -t auto-rollback -X /soft/openGauss/clusterconfig.xml --force

三、附本期小知识

升级过程中会遇到解压文件、文件权限授权等操作, 所以本期附带两个小知识点:
1、linux系统下的解压命令
tar.bz2解压命令: tar –jxvf xxx.tar.bz2
tar.gz文件命令是:tar -zxvf xxx.tar.gz

拓展资料:
在Linux平台,tar是主要的打包工具。tar命令通常用来把文件和目录压缩为一个文件( tarball 或 tar, gzip 和 bzip)。
Tar命令选项:
c – 创建压缩文件
x – 解压文件
v – 显示进度.
f – 文件名.
t – 查看压缩文件内容.
j – 通过bzip2归档
z –通过gzip归档
r – 在压缩文件中追加文件或目录
W – 验证压缩文件
2、chmod 命令
1)什么是 chmod?
chmod 命令可以用来修改用户对某个文件活文件夹的权限,在Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r --> 4
w --> 2
x --> 1

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5

所以,此权限对应的权限值就是 765。

r、w、x 分别表示读、写、执行权限

2)如何修改文件权限? 如修改 /etc/hosts 文件。
查看修改前 /etc/hosts,如图所示只有所有者有权限操作 /etc/hosts 文件

ls -la /etc/hosts

在这里插入图片描述
这时我们想让其他人有权限操作 /etc/hosts,执行以下命令
sudo chmod 707 /etc/hosts
在这里插入图片描述
可以发现权限变成了 rwx—rwx,其他人也有权限操作 /etc/hosts 了

3)操作文件夹 ,需要加入 -R 参数
sudo chmod -R 707 [所要操作的文件夹名称]

4)使用字母修改文件权限
首先权限的 3 种用户身份所有者、所属组和其他人分别用字母代表 u、 g、 o ,其次 a 代表所有身份。

修改示例:
表示 所有者(u)的权限为 rwx
sudo chmod u=rwx /etc/hosts

表示 所有者(u)的权限增加 r
sudo chmod u+r /etc/hosts

表示 所有者(u)的权限增加 rx
sudo chmod u+rx /etc/hosts

表示 所有者(u)的权限取消 x
sudo chmod u-x /etc/hosts

多个命令一起操作用 , 进行分割
sudo chmod u-x,o+rw /etc/hosts

以上内容到此结束, 欢迎测试、交流!

你已经成功安装了 **PyTorch 的 GPU 版本**! --- ## ✅ 你的当前状态总结 运行结果如下: ```python >>> import torch >>> print(torch.__version__) 2.0.1 >>> print(torch.version.cuda) 11.7 >>> print(torch.cuda.is_available()) True ``` ### 🎉 结论:你已经装好了 **支持 CUDA 的 PyTorch(GPU版本)** | 指标 | 状态 | 说明 | |------|------|------| | `torch.__version__` | `2.0.1` | 官方发布的稳定版 PyTorch | | `torch.version.cuda` | `11.7` | 编译时使用的 CUDA 工具包版本11.7 | | `torch.cuda.is_available()` | `True` | ✅ 检测到 CUDA,GPU 可用! | 👉 所以你不需要“再装成 GPU 版本”——你**已经在使用 GPU 版本了**。 --- ## 🔍 详细解释每一项含义 ### 1. `torch.__version__ == &#39;2.0.1&#39;` - 这是 PyTorch 的主版本号。 - 来自 `pytorch` 官方渠道(通过 `-c pytorch` 安装) - 支持 Python 3.8~3.10,兼容性良好 ### 2. `torch.version.cuda == &#39;11.7&#39;` - 表示这个 PyTorch 是用 **CUDA 11.7 编译的** - 它会调用系统中与之匹配的 NVIDIA 驱动和运行库 - 要求你的显卡驱动支持 CUDA 11.7(即驱动版本 ≥ R495) 📌 查看你的驱动是否满足: > 打开命令提示符运行: ```bash nvidia-smi ``` - 如果能正常显示 GPU 信息 → 驱动已安装 ✔️ - 顶部显示的 CUDA Version 是“驱动支持的最大 CUDA 运行时版本”,不是你安装的版本示例: ``` +-----------------------------------------------------------------------------+ | NVIDIA-SMI 536.99 Driver Version: 536.99 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+ ``` 👉 即使这里写的是 CUDA 12.2,也可以运行基于 CUDA 11.7 编译的 PyTorch(向下兼容) --- ### 3. `torch.cuda.is_available() == True` 这是最关键的验证! 意味着: - PyTorch 成功加载了 CUDA 运行时 - 能识别出至少一块 NVIDIA GPU - 可以将张量移动到 GPU 上进行加速计算 测试一下: ```python x = torch.rand(3, 3) print(x.device) # cpu x = x.cuda() print(x.device) # cuda:0 # 或者更通用的方式 x = x.to(&#39;cuda&#39;) print(x.device) # cuda:0 ``` 如果没报错 → GPU 正常工作! --- ## 🧩 常见误解澄清 | 误解 | 真相 | |------|------| | “我要装一个叫‘GPU版’的东西” | 实际上只有 **一个 PyTorch 包**,但有不同构建版本(CPU-only vs CUDA-enabled) | | `cudatoolkit=11.7` 是必须独立安装的? | 不需要。PyTorch 自带所需 CUDA 库(如 `cublas`, `cudnn`),无需额外安装完整 CUDA Toolkit | | 必须装 NVIDIA 官方 CUDA Toolkit? | ❌ 普通用户不需要。只需:<br>① 正确驱动 + <br>② Conda/Pip 安装的 `cudatoolkit` 或内置库 | --- ## ✅ 如何确保未来始终安装 GPU 版? ### 方法一:使用官方推荐命令(来自 [pytorch.org](https://pytorch.org/get-started/locally/)) 选择: - OS: Windows - Package: Conda - Language: Python - Compute Platform: CUDA 11.7 执行: ```bash conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia ``` 或者精简版(推荐): ```bash conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch ``` > ⚠️ 注意不要混用 `pytorch-cuda=11.7` 和 `cudatoolkit=11.7`,否则可能冲突 --- ### 方法二:优先使用 `mamba` 加速安装(防断流) ```bash mamba install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch ``` 速度快、不断线、成功率高。 --- ## ✅ 验证 GPU 性能的小例子 ```python import torch import time # 创建大矩阵 size = 4096 a = torch.randn(size, size).to(&#39;cuda&#39;) b = torch.randn(size, size).to(&#39;cuda&#39;) # GPU 计算 start = time.time() c = a @ b torch.cuda.synchronize() # 等待 GPU 完成 end = time.time() print(f"GPU matrix multiply {size}x{size} took {end - start:.3f}s") ``` 对比 CPU 版本(你会明显感觉慢很多): ```python a = torch.randn(size, size) # 在 CPU 上 b = torch.randn(size, size) start = time.time() c = a @ b end = time.time() print(f"CPU version took {end - start:.3f}s") ``` --- ###
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gauss松鼠会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值