opengauss教程FG024-版本升级实战
目录大纲
Part01-基础概念与理论知识
1.1 版本升级概述
版本升级是指将数据库系统从较低版本更新到较高版本的过程,了解升级的概念和方法对于数据库的维护和管理至关重要。风哥教程参考opengauss官方文档,升级具有以下特点:
- 版本更新:获取新特性和功能
- bug修复:解决已知问题
- 性能优化:提高系统性能
- 安全性增强:修复安全漏洞
1.2 升级类型
openGauss支持的升级类型:
- 离线升级:
- 适用于单机环境
- 需要停止数据库服务
- 升级过程简单直接
- 停机时间较长
- 滚动升级:
- 适用于集群环境
- 逐个节点进行升级
- 最小化服务中断
- 升级过程复杂
- 在线升级:
- 适用于高可用环境
- 不需要停止数据库服务
- 升级过程平滑
- 技术要求较高
1.3 升级注意事项
版本升级的注意事项:
- 备份:
- 升级前必须备份数据库
- 确保备份的完整性
- 测试备份的可恢复性
- 兼容性:
- 检查应用兼容性
- 测试SQL语句兼容性
- 验证第三方工具兼容性
- 资源:
- 确保足够的磁盘空间
- 确保足够的内存
- 确保足够的CPU资源
- 时间:
- 选择业务低峰期
- 预留足够的升级时间
- 考虑回滚时间
风哥提示:版本升级是数据库生命周期中的重要环节,正确的规划和执行可以确保系统的稳定性和可靠性。
Part02-生产环境规划与建议
风哥提示:
2.1 升级前规划
生产环境升级前规划建议
- 升级目标:
- 明确升级目标版本
- 了解目标版本的新特性
- 评估升级的必要性
- 升级路径:
- 确定升级路径
- 检查是否需要中间版本
- 了解升级的具体步骤
- 测试环境:
- 在测试环境中进行升级测试
- 验证升级过程
- 测试应用兼容性
- 文档准备:
- 准备升级文档
- 制定升级计划
- 准备回滚计划
学习交流加群风哥微信: itpux-com
2.2 升级时间安排
生产环境的升级时间安排建议:
- 时间选择:
- 选择业务低峰期
- 避开重要业务活动
- 考虑系统维护窗口
- 时间预算:
- 预估升级时间
- 预留足够的缓冲时间
- 考虑回滚时间
- 通知:
- 提前通知相关业务部门
- 告知用户系统维护时间
- 建立沟通机制
2.3 风险评估
版本升级的风险评估建议:
- 风险识别:
- 识别潜在风险
- 评估风险影响
- 制定风险应对措施
学习交流加群风哥QQ113257174
- 回滚计划:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 业务影响:
- 评估对业务的影响
- 制定业务连续性计划
- 准备应急方案
Part03-生产环境项目实施方案
3.1 升级前准备
# 检查当前版本
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 检查数据库状态
[opengauss@fgedu.net.cn ~]$ gs_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
更多视频教程www.fgedu.net.cn
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 检查系统资源
[opengauss@fgedu.net.cn ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 200G 50G 150G 25% /opengauss
# 下载新版本
[opengauss@fgedu.net.cn ~]$ wget https://opengauss.org/en/download.html
# 验证安装包
[opengauss@fgedu.net.cn ~]$ sha256sum openGauss-6.0.0-CentOS-64bit.tar.gz
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 openGauss-6.0.0-CentOS-64bit.tar.gz
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 检查数据库状态
[opengauss@fgedu.net.cn ~]$ gs_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
更多视频教程www.fgedu.net.cn
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 检查系统资源
[opengauss@fgedu.net.cn ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 200G 50G 150G 25% /opengauss
# 下载新版本
[opengauss@fgedu.net.cn ~]$ wget https://opengauss.org/en/download.html
# 验证安装包
[opengauss@fgedu.net.cn ~]$ sha256sum openGauss-6.0.0-CentOS-64bit.tar.gz
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 openGauss-6.0.0-CentOS-64bit.tar.gz
3.2 升级执行
# 停止数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 解压新版本
[opengauss@fgedu.net.cn ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
# 备份旧版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app /opengauss/app_old
# 安装新版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 执行升级
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 解压新版本
[opengauss@fgedu.net.cn ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
# 备份旧版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app /opengauss/app_old
# 安装新版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 执行升级
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
3.3 升级后验证
# 验证版本
更多学习教程公众号风哥教程itpux_com
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 验证数据库功能
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT * FROM fgedu_employee;
“
Password:
id | name | age | dept_id | salary
—-+———-+—–+———+——–
1 | Zhang San | 30 | 1 | 9300.00
2 | Li Si | 25 | 1 | 6600.00
3 | Wang Wu | 35 | 2 | 7000.00
4 | Zhao Liu | 40 | 3 | 9000.00
(4 rows)
# 验证应用连接
[application@app-server ~]$ psql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT 1;
“
Password:
?column?
———-
1
(1 row)
# 检查日志
[opengauss@fgedu.net.cn ~]$ tail -n 100 /opengauss/fgdata/pg_log/postgresql-2024-01-01_123456.log
2024-01-01 12:34:56.123 CST [12345] LOG: starting openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
2024-01-01 12:34:56.124 CST [12345] LOG: listening on IPv4 address “0.0.0.0”, port 5432
2024-01-01 12:34:56.124 CST [12345] LOG: listening on IPv6 address “::”, port 5432
2024-01-01 12:34:56.125 CST [12345] LOG: listening on Unix socket “/tmp/.s.PGSQL.5432”
2024-01-01 12:34:56.126 CST [12346] LOG: database system was shut down at 2024-01-01 12:34:00 CST
from DB视频:www.itpux.com
2024-01-01 12:34:56.127 CST [12345] LOG: database system is ready to accept connections
更多学习教程公众号风哥教程itpux_com
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 验证数据库功能
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT * FROM fgedu_employee;
“
Password:
id | name | age | dept_id | salary
—-+———-+—–+———+——–
1 | Zhang San | 30 | 1 | 9300.00
2 | Li Si | 25 | 1 | 6600.00
3 | Wang Wu | 35 | 2 | 7000.00
4 | Zhao Liu | 40 | 3 | 9000.00
(4 rows)
# 验证应用连接
[application@app-server ~]$ psql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT 1;
“
Password:
?column?
———-
1
(1 row)
# 检查日志
[opengauss@fgedu.net.cn ~]$ tail -n 100 /opengauss/fgdata/pg_log/postgresql-2024-01-01_123456.log
2024-01-01 12:34:56.123 CST [12345] LOG: starting openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
2024-01-01 12:34:56.124 CST [12345] LOG: listening on IPv4 address “0.0.0.0”, port 5432
2024-01-01 12:34:56.124 CST [12345] LOG: listening on IPv6 address “::”, port 5432
2024-01-01 12:34:56.125 CST [12345] LOG: listening on Unix socket “/tmp/.s.PGSQL.5432”
2024-01-01 12:34:56.126 CST [12346] LOG: database system was shut down at 2024-01-01 12:34:00 CST
from DB视频:www.itpux.com
2024-01-01 12:34:56.127 CST [12345] LOG: database system is ready to accept connections
Part04-生产案例与实战讲解
4.1 单机版本升级实战
# 检查当前版本
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 停止数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 解压新版本
[opengauss@fgedu.net.cn ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
# 备份旧版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app /opengauss/app_old
# 安装新版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 执行升级
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
# 验证升级结果
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 测试数据库功能
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT * FROM fgedu_employee;
“
Password:
id | name | age | dept_id | salary
—-+———-+—–+———+——–
1 | Zhang San | 30 | 1 | 9300.00
2 | Li Si | 25 | 1 | 6600.00
3 | Wang Wu | 35 | 2 | 7000.00
4 | Zhao Liu | 40 | 3 | 9000.00
(4 rows)
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 停止数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 解压新版本
[opengauss@fgedu.net.cn ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
# 备份旧版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app /opengauss/app_old
# 安装新版本
[opengauss@fgedu.net.cn ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 执行升级
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
# 验证升级结果
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 6.0.0 build 67890 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 测试数据库功能
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT * FROM fgedu_employee;
“
Password:
id | name | age | dept_id | salary
—-+———-+—–+———+——–
1 | Zhang San | 30 | 1 | 9300.00
2 | Li Si | 25 | 1 | 6600.00
3 | Wang Wu | 35 | 2 | 7000.00
4 | Zhao Liu | 40 | 3 | 9000.00
(4 rows)
4.2 集群版本升级实战
# 检查当前版本(主节点)
[opengauss@primary ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 检查当前版本(备节点)
[opengauss@standby ~]$ gsql -h 192.168.1.101 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库(主节点)
[opengauss@primary ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 停止备节点
[opengauss@standby ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 升级备节点
[opengauss@standby ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
[opengauss@standby ~]$ mv /opengauss/app /opengauss/app_old
[opengauss@standby ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动备节点
[opengauss@standby ~]$ gs_ctl start -D /opengauss/fgdata -M standby
waiting for server to start…. done
server started
# 执行备节点升级
[opengauss@standby ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
# 主备切换
[opengauss@primary ~]$ gs_ctl switchover -D /opengauss/fgdata
[2024-01-01 12:36:00] [INFO] switchover started
[2024-01-01 12:36:01] [INFO] switchover completed successfully
# 停止原主节点
[opengauss@primary ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 升级原主节点
[opengauss@primary ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
[opengauss@primary ~]$ mv /opengauss/app /opengauss/app_old
[opengauss@primary ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动原主节点作为备节点
[opengauss@primary ~]$ gs_ctl start -D /opengauss/fgdata -M standby
waiting for server to start…. done
server started
# 执行原主节点升级
[opengauss@primary ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:37:00] [INFO] Begin to do health check.
[2024-01-01 12:37:01] [INFO] Health check passed.
[2024-01-01 12:37:01] [INFO] Begin to upgrade.
[2024-01-01 12:37:04] [INFO] Upgrade completed successfully.
# 验证集群状态
[opengauss@standby ~]$ gs_ctl query -D /opengauss/fgdata
[2024-01-01 12:38:00] [INFO] current_role : Primary
[2024-01-01 12:38:00] [INFO] server_mode : Normal
[2024-01-01 12:38:00] [INFO] local_role : Primary
[2024-01-01 12:38:00] [INFO] instance_id : 6001
[2024-01-01 12:38:00] [INFO] cluster_state : Normal
[2024-01-01 12:38:00] [INFO] db_state : Normal
[2024-01-01 12:38:00] [INFO] detail_information : Datanode State
[opengauss@primary ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 检查当前版本(备节点)
[opengauss@standby ~]$ gsql -h 192.168.1.101 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
# 备份数据库(主节点)
[opengauss@primary ~]$ gs_basebackup -D /opengauss/backup/full_pre_upgrade -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
Password:
gs_basebackup: initiating base backup, waiting for checkpoint to complete
gs_basebackup: checkpoint completed
gs_basebackup: write-ahead log start point: 0/12345678
gs_basebackup: write-ahead log end point: 0/12345678
gs_basebackup: base backup completed, pg_wal directory size: 16 MB
# 停止备节点
[opengauss@standby ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 升级备节点
[opengauss@standby ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
[opengauss@standby ~]$ mv /opengauss/app /opengauss/app_old
[opengauss@standby ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动备节点
[opengauss@standby ~]$ gs_ctl start -D /opengauss/fgdata -M standby
waiting for server to start…. done
server started
# 执行备节点升级
[opengauss@standby ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [INFO] Upgrade completed successfully.
# 主备切换
[opengauss@primary ~]$ gs_ctl switchover -D /opengauss/fgdata
[2024-01-01 12:36:00] [INFO] switchover started
[2024-01-01 12:36:01] [INFO] switchover completed successfully
# 停止原主节点
[opengauss@primary ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 升级原主节点
[opengauss@primary ~]$ tar -xf openGauss-6.0.0-CentOS-64bit.tar.gz -C /opengauss/
[opengauss@primary ~]$ mv /opengauss/app /opengauss/app_old
[opengauss@primary ~]$ mv /opengauss/openGauss-6.0.0-CentOS-64bit /opengauss/app
# 启动原主节点作为备节点
[opengauss@primary ~]$ gs_ctl start -D /opengauss/fgdata -M standby
waiting for server to start…. done
server started
# 执行原主节点升级
[opengauss@primary ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:37:00] [INFO] Begin to do health check.
[2024-01-01 12:37:01] [INFO] Health check passed.
[2024-01-01 12:37:01] [INFO] Begin to upgrade.
[2024-01-01 12:37:04] [INFO] Upgrade completed successfully.
# 验证集群状态
[opengauss@standby ~]$ gs_ctl query -D /opengauss/fgdata
[2024-01-01 12:38:00] [INFO] current_role : Primary
[2024-01-01 12:38:00] [INFO] server_mode : Normal
[2024-01-01 12:38:00] [INFO] local_role : Primary
[2024-01-01 12:38:00] [INFO] instance_id : 6001
[2024-01-01 12:38:00] [INFO] cluster_state : Normal
[2024-01-01 12:38:00] [INFO] db_state : Normal
[2024-01-01 12:38:00] [INFO] detail_information : Datanode State
4.3 升级失败回滚实战
# 升级失败场景
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [ERROR] Upgrade failed: reason
# 停止数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 恢复旧版本
[opengauss@fgedu.net.cn ~]$ rm -rf /opengauss/app
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app_old /opengauss/app
# 恢复数据库
[opengauss@fgedu.net.cn ~]$ rm -rf /opengauss/fgdata
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full_pre_upgrade /opengauss/fgdata
[opengauss@fgedu.net.cn ~]$ chown -R opengauss:dbgrp /opengauss/fgdata
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 验证回滚结果
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
[opengauss@fgedu.net.cn ~]$ gs_upgrade -U opengauss -G dbgrp -X /opengauss/app/share/upgrade_config.xml
[2024-01-01 12:34:56] [INFO] Begin to do health check.
[2024-01-01 12:34:57] [INFO] Health check passed.
[2024-01-01 12:34:57] [INFO] Begin to upgrade.
[2024-01-01 12:35:00] [ERROR] Upgrade failed: reason
# 停止数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl stop -D /opengauss/fgdata
waiting for server to shut down…. done
server stopped
# 恢复旧版本
[opengauss@fgedu.net.cn ~]$ rm -rf /opengauss/app
[opengauss@fgedu.net.cn ~]$ mv /opengauss/app_old /opengauss/app
# 恢复数据库
[opengauss@fgedu.net.cn ~]$ rm -rf /opengauss/fgdata
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full_pre_upgrade /opengauss/fgdata
[opengauss@fgedu.net.cn ~]$ chown -R opengauss:dbgrp /opengauss/fgdata
# 启动数据库
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata
waiting for server to start…. done
server started
# 验证回滚结果
[opengauss@fgedu.net.cn ~]$ gsql -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -c “SELECT version();
“
Password:
version
———————————————————————————————
openGauss 5.0.0 build 12345 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
Part05-风哥经验总结与分享
5.1 升级最佳实践
- 升级前准备:
- 充分备份数据库
- 测试升级过程
- 评估升级风险
- 制定回滚计划
- 升级执行:
- 选择合适的升级时间
- 严格按照升级步骤执行
- 监控升级过程
- 及时处理升级中的问题
- 升级后验证:
- 验证数据库功能
- 测试应用兼容性
- 监控系统性能
- 检查日志中的错误
- 回滚策略:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 在升级失败时及时回滚
5.2 常见问题与解决方案
常见升级问题及解决方法
- 问题1:升级过程中出现错误
- 症状:升级过程中出现错误信息
- 解决方案:检查错误日志;分析错误原因;执行回滚;修复问题后重新升级
- 问题2:升级后数据库无法启动
- 症状:升级后数据库启动失败
- 解决方案:检查错误日志;恢复旧版本;修复问题后重新升级
- 问题3:升级后应用无法连接
- 症状:升级后应用无法连接数据库
- 解决方案:检查网络连接;检查数据库配置;测试数据库连接;更新应用配置
- 问题4:升级后性能下降
- 症状:升级后系统性能下降
- 解决方案:优化数据库参数;重建索引;分析表统计信息;调整应用代码
- 问题5:升级后数据丢失
- 症状:升级后数据丢失
- 解决方案:从备份恢复;检查升级过程;确保数据完整性
5.3 升级后的维护建议
- 监控:
- 监控数据库状态
- 监控系统性能
- 监控应用兼容性
- 监控日志中的错误
- 优化:
- 优化数据库参数
- 重建索引
- 分析表统计信息
- 调整应用代码
- 备份:
- 升级后进行全量备份
- 测试备份的可恢复性
- 更新备份策略
- 文档:
- 记录升级过程
- 更新系统文档
- 分享升级经验
风哥提示:版本升级是数据库生命周期中的重要环节,正确的规划和执行可以确保系统的稳定性和可靠性。在生产环境中,应该充分准备,严格按照步骤执行,及时处理问题,并做好回滚准备。同时,应该在升级后进行充分的验证和监控,确保系统的正常运行。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
