opengauss教程FG023-openGauss升级与迁移基础
目录大纲
Part01-基础概念与理论知识
1.1 升级概述
升级是指将数据库系统从较低版本更新到较高版本的过程,了解升级的概念和方法对于数据库的维护和管理至关重要。风哥教程参考opengauss官方文档,升级具有以下特点:
- 版本更新:获取新特性和功能
- bug修复:解决已知问题
- 性能优化:提高系统性能
- 安全性增强:修复安全漏洞
1.2 迁移概述
迁移是指将数据从一个环境转移到另一个环境的过程,了解迁移的概念和方法对于数据库的管理至关重要:
- 平台迁移:从一个平台迁移到另一个平台
- 版本迁移:从一个版本迁移到另一个版本
- 架构迁移:从一种架构迁移到另一种架构
- 云迁移:从本地环境迁移到云环境
1.3 升级与迁移的区别
升级与迁移的主要区别:
- 升级:
- 在同一环境中进行
- 主要是版本更新
- 通常不需要数据迁移
- 风险相对较低
- 迁移:
- 可能涉及不同环境
- 可能涉及版本、平台或架构的变化
- 通常需要数据迁移
- 风险相对较高
风哥提示:升级和迁移是数据库生命周期中的重要环节,正确的规划和执行可以确保系统的稳定性和可靠性。
Part02-生产环境规划与建议
2.1 升级规划
生产环境升级规划建议
- 升级前准备:
- 备份数据库
- 测试升级过程
- 评估升级风险
- 制定回滚计划
- 升级时间:
- 选择业务低峰期
- 预留足够的时间
- 通知相关人员
- 升级方式:
- 滚动升级:适用于集群环境
- 离线升级:适用于单机环境
- 在线升级:最小化停机时间
- 升级后验证:
- 验证数据库功能
- 测试应用兼容性
- 监控系统性能
风哥提示:
2.2 迁移规划
生产环境的迁移规划建议:
- 迁移目标:
- 明确迁移目标
- 评估目标环境
- 制定迁移计划
- 迁移策略:
- 全量迁移:一次性迁移所有数据
- 增量迁移:先迁移部分数据,再迁移剩余数据
- 双写迁移:同时在源和目标环境写入数据
- 迁移工具:
- 使用官方迁移工具
- 考虑第三方迁移工具
- 测试迁移工具的可靠性
- 迁移验证:
- 验证数据完整性
- 测试应用兼容性
- 监控系统性能
学习交流加群风哥微信: itpux-com
2.3 风险评估
升级与迁移的风险评估建议:
- 风险识别:
- 识别潜在风险
- 评估风险影响
- 制定风险应对措施
- 回滚计划:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 业务影响:
- 评估对业务的影响
- 制定业务连续性计划
- 通知相关业务部门
- 资源需求:
- 评估资源需求
- 确保资源充足
- 预留应急资源
学习交流加群风哥QQ113257174
Part03-生产环境项目实施方案
3.1 升级准备
# 备份数据库
[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 ~]$ 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 ~]$ 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 ~]$ 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 ~]$ 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 ~]$ 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
更多视频教程www.fgedu.net.cn
# 启动数据库
[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 ~]$ 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
更多视频教程www.fgedu.net.cn
# 启动数据库
[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)
3.3 迁移准备
# 备份源数据库
[opengauss@source ~]$ gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -F c -f /opengauss/backup/fgedudb_dump.dump
Password:
gs_dump: last built-in OID is 16383
gs_dump: reading extensions
gs_dump: identifying extension members
gs_dump: reading schemas
gs_dump: reading user-defined tables
gs_dump: reading user-defined functions
gs_dump: reading user-defined types
gs_dump: reading procedural languages
gs_dump: reading user-defined aggregate functions
gs_dump: reading user-defined operators
gs_dump: reading user-defined operator classes
gs_dump: reading user-defined operator families
gs_dump: reading user-defined text search parsers
gs_dump: reading user-defined text search templates
gs_dump: reading user-defined text search dictionaries
gs_dump: reading user-defined text search configurations
更多学习教程公众号风哥教程itpux_com
gs_dump: reading user-defined foreign-data wrappers
gs_dump: reading user-defined foreign servers
gs_dump: reading default privileges
gs_dump: reading user-defined collations
gs_dump: reading user-defined conversions
gs_dump: reading user-defined transforms
gs_dump: reading user-defined domains
gs_dump: reading sequences
gs_dump: reading table data
gs_dump: reading extensible attributes
gs_dump: reading indexes
gs_dump: reading constraints
gs_dump: reading triggers
gs_dump: reading rewrite rules
gs_dump: writing COPY commands
gs_dump: writing INSERT commands
gs_dump: writing function definitions
gs_dump: writing type definitions
gs_dump: writing operator definitions
gs_dump: writing operator class definitions
gs_dump: writing operator family definitions
gs_dump: writing text search parser definitions
gs_dump: writing text search template definitions
gs_dump: writing text search dictionary definitions
gs_dump: writing text search configuration definitions
gs_dump: writing foreign-data wrapper definitions
gs_dump: writing foreign server definitions
gs_dump: writing default privileges
gs_dump: writing event trigger definitions
gs_dump: dumping contents of global objects
from DB视频:www.itpux.com
gs_dump: dumping contents of database objects
gs_dump: dump completed successfully
# 传输备份文件到目标服务器
[opengauss@source ~]$ scp /opengauss/backup/fgedudb_dump.dump opengauss@192.168.1.200:/opengauss/backup/
Password:
fgedudb_dump.dump 100% 100MB 10.0MB/s 00:10
[opengauss@source ~]$ gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -F c -f /opengauss/backup/fgedudb_dump.dump
Password:
gs_dump: last built-in OID is 16383
gs_dump: reading extensions
gs_dump: identifying extension members
gs_dump: reading schemas
gs_dump: reading user-defined tables
gs_dump: reading user-defined functions
gs_dump: reading user-defined types
gs_dump: reading procedural languages
gs_dump: reading user-defined aggregate functions
gs_dump: reading user-defined operators
gs_dump: reading user-defined operator classes
gs_dump: reading user-defined operator families
gs_dump: reading user-defined text search parsers
gs_dump: reading user-defined text search templates
gs_dump: reading user-defined text search dictionaries
gs_dump: reading user-defined text search configurations
更多学习教程公众号风哥教程itpux_com
gs_dump: reading user-defined foreign-data wrappers
gs_dump: reading user-defined foreign servers
gs_dump: reading default privileges
gs_dump: reading user-defined collations
gs_dump: reading user-defined conversions
gs_dump: reading user-defined transforms
gs_dump: reading user-defined domains
gs_dump: reading sequences
gs_dump: reading table data
gs_dump: reading extensible attributes
gs_dump: reading indexes
gs_dump: reading constraints
gs_dump: reading triggers
gs_dump: reading rewrite rules
gs_dump: writing COPY commands
gs_dump: writing INSERT commands
gs_dump: writing function definitions
gs_dump: writing type definitions
gs_dump: writing operator definitions
gs_dump: writing operator class definitions
gs_dump: writing operator family definitions
gs_dump: writing text search parser definitions
gs_dump: writing text search template definitions
gs_dump: writing text search dictionary definitions
gs_dump: writing text search configuration definitions
gs_dump: writing foreign-data wrapper definitions
gs_dump: writing foreign server definitions
gs_dump: writing default privileges
gs_dump: writing event trigger definitions
gs_dump: dumping contents of global objects
from DB视频:www.itpux.com
gs_dump: dumping contents of database objects
gs_dump: dump completed successfully
# 传输备份文件到目标服务器
[opengauss@source ~]$ scp /opengauss/backup/fgedudb_dump.dump opengauss@192.168.1.200:/opengauss/backup/
Password:
fgedudb_dump.dump 100% 100MB 10.0MB/s 00:10
3.4 迁移执行
# 在目标服务器上创建数据库
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d postgres -c “CREATE DATABASE fgedudb;
“
Password:
CREATE DATABASE
# 恢复数据
[opengauss@target ~]$ pg_restore -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb /opengauss/backup/fgedudb_dump.dump
Password:
pg_restore: processing data for table “fgedu_employee”
pg_restore: processing data for table “fgedu_department”
pg_restore: processing data for table “fgedu_product”
pg_restore: processing data for table “fgedu_order”
# 验证迁移结果
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb -c “SELECT count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d postgres -c “CREATE DATABASE fgedudb;
“
Password:
CREATE DATABASE
# 恢复数据
[opengauss@target ~]$ pg_restore -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb /opengauss/backup/fgedudb_dump.dump
Password:
pg_restore: processing data for table “fgedu_employee”
pg_restore: processing data for table “fgedu_department”
pg_restore: processing data for table “fgedu_product”
pg_restore: processing data for table “fgedu_order”
# 验证迁移结果
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb -c “SELECT count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
Part04-生产案例与实战讲解
4.1 版本升级实战
# 备份数据库
[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 ~]$ 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 ~]$ wget https://opengauss.org/en/download.html
# 停止数据库
[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 ~]$ 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 ~]$ 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 ~]$ wget https://opengauss.org/en/download.html
# 停止数据库
[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@source ~]$ gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -F c -f /opengauss/backup/fgedudb_dump.dump
Password:
gs_dump: last built-in OID is 16383
gs_dump: reading extensions
gs_dump: identifying extension members
gs_dump: reading schemas
gs_dump: reading user-defined tables
gs_dump: reading user-defined functions
gs_dump: reading user-defined types
gs_dump: reading procedural languages
gs_dump: reading user-defined aggregate functions
gs_dump: reading user-defined operators
gs_dump: reading user-defined operator classes
gs_dump: reading user-defined operator families
gs_dump: reading user-defined text search parsers
gs_dump: reading user-defined text search templates
gs_dump: reading user-defined text search dictionaries
gs_dump: reading user-defined text search configurations
gs_dump: reading user-defined foreign-data wrappers
gs_dump: reading user-defined foreign servers
gs_dump: reading default privileges
gs_dump: reading user-defined collations
gs_dump: reading user-defined conversions
gs_dump: reading user-defined transforms
gs_dump: reading user-defined domains
gs_dump: reading sequences
gs_dump: reading table data
gs_dump: reading extensible attributes
gs_dump: reading indexes
gs_dump: reading constraints
gs_dump: reading triggers
gs_dump: reading rewrite rules
gs_dump: writing COPY commands
gs_dump: writing INSERT commands
gs_dump: writing function definitions
gs_dump: writing type definitions
gs_dump: writing operator definitions
gs_dump: writing operator class definitions
gs_dump: writing operator family definitions
gs_dump: writing text search parser definitions
gs_dump: writing text search template definitions
gs_dump: writing text search dictionary definitions
gs_dump: writing text search configuration definitions
gs_dump: writing foreign-data wrapper definitions
gs_dump: writing foreign server definitions
gs_dump: writing default privileges
gs_dump: writing event trigger definitions
gs_dump: dumping contents of global objects
gs_dump: dumping contents of database objects
gs_dump: dump completed successfully
# 传输备份文件到目标服务器
[opengauss@source ~]$ scp /opengauss/backup/fgedudb_dump.dump opengauss@192.168.1.200:/opengauss/backup/
Password:
fgedudb_dump.dump 100% 100MB 10.0MB/s 00:10
# 在目标服务器上创建数据库
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d postgres -c “CREATE DATABASE fgedudb;
“
Password:
CREATE DATABASE
# 恢复数据
[opengauss@target ~]$ pg_restore -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb /opengauss/backup/fgedudb_dump.dump
Password:
pg_restore: processing data for table “fgedu_employee”
pg_restore: processing data for table “fgedu_department”
pg_restore: processing data for table “fgedu_product”
pg_restore: processing data for table “fgedu_order”
# 验证迁移结果
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb -c “SELECT count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
[opengauss@source ~]$ gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -F c -f /opengauss/backup/fgedudb_dump.dump
Password:
gs_dump: last built-in OID is 16383
gs_dump: reading extensions
gs_dump: identifying extension members
gs_dump: reading schemas
gs_dump: reading user-defined tables
gs_dump: reading user-defined functions
gs_dump: reading user-defined types
gs_dump: reading procedural languages
gs_dump: reading user-defined aggregate functions
gs_dump: reading user-defined operators
gs_dump: reading user-defined operator classes
gs_dump: reading user-defined operator families
gs_dump: reading user-defined text search parsers
gs_dump: reading user-defined text search templates
gs_dump: reading user-defined text search dictionaries
gs_dump: reading user-defined text search configurations
gs_dump: reading user-defined foreign-data wrappers
gs_dump: reading user-defined foreign servers
gs_dump: reading default privileges
gs_dump: reading user-defined collations
gs_dump: reading user-defined conversions
gs_dump: reading user-defined transforms
gs_dump: reading user-defined domains
gs_dump: reading sequences
gs_dump: reading table data
gs_dump: reading extensible attributes
gs_dump: reading indexes
gs_dump: reading constraints
gs_dump: reading triggers
gs_dump: reading rewrite rules
gs_dump: writing COPY commands
gs_dump: writing INSERT commands
gs_dump: writing function definitions
gs_dump: writing type definitions
gs_dump: writing operator definitions
gs_dump: writing operator class definitions
gs_dump: writing operator family definitions
gs_dump: writing text search parser definitions
gs_dump: writing text search template definitions
gs_dump: writing text search dictionary definitions
gs_dump: writing text search configuration definitions
gs_dump: writing foreign-data wrapper definitions
gs_dump: writing foreign server definitions
gs_dump: writing default privileges
gs_dump: writing event trigger definitions
gs_dump: dumping contents of global objects
gs_dump: dumping contents of database objects
gs_dump: dump completed successfully
# 传输备份文件到目标服务器
[opengauss@source ~]$ scp /opengauss/backup/fgedudb_dump.dump opengauss@192.168.1.200:/opengauss/backup/
Password:
fgedudb_dump.dump 100% 100MB 10.0MB/s 00:10
# 在目标服务器上创建数据库
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d postgres -c “CREATE DATABASE fgedudb;
“
Password:
CREATE DATABASE
# 恢复数据
[opengauss@target ~]$ pg_restore -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb /opengauss/backup/fgedudb_dump.dump
Password:
pg_restore: processing data for table “fgedu_employee”
pg_restore: processing data for table “fgedu_department”
pg_restore: processing data for table “fgedu_product”
pg_restore: processing data for table “fgedu_order”
# 验证迁移结果
[opengauss@target ~]$ gsql -h 192.168.1.200 -p 5432 -U opengauss -d fgedudb -c “SELECT count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
4.3 应用迁移实战
# 测试应用连接
[application@app-server ~]$ psql -h 192.168.1.200 -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)
# 修改应用配置文件
[application@app-server ~]$ vim /app/config/database.yml
# 修改数据库连接信息
production:
adapter: postgresql
host: 192.168.1.200
port: 5432
database: fgedudb
username: opengauss
password: password
# 重启应用
[application@app-server ~]$ systemctl restart application
# 测试应用功能
[application@app-server ~]$ curl -i http://localhost:8080/api/employees
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 200
{“data”:[{“id”:1,”name”:”Zhang San”,”age”:30,”department”:”IT”,”salary”:9300},{“id”:2,”name”:”Li Si”,”age”:25,”department”:”IT”,”salary”:6600},{“id”:3,”name”:”Wang Wu”,”age”:35,”department”:”HR”,”salary”:7000},{“id”:4,”name”:”Zhao Liu”,”age”:40,”department”:”Finance”,”salary”:9000}]}
[application@app-server ~]$ psql -h 192.168.1.200 -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)
# 修改应用配置文件
[application@app-server ~]$ vim /app/config/database.yml
# 修改数据库连接信息
production:
adapter: postgresql
host: 192.168.1.200
port: 5432
database: fgedudb
username: opengauss
password: password
# 重启应用
[application@app-server ~]$ systemctl restart application
# 测试应用功能
[application@app-server ~]$ curl -i http://localhost:8080/api/employees
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 200
{“data”:[{“id”:1,”name”:”Zhang San”,”age”:30,”department”:”IT”,”salary”:9300},{“id”:2,”name”:”Li Si”,”age”:25,”department”:”IT”,”salary”:6600},{“id”:3,”name”:”Wang Wu”,”age”:35,”department”:”HR”,”salary”:7000},{“id”:4,”name”:”Zhao Liu”,”age”:40,”department”:”Finance”,”salary”:9000}]}
Part05-风哥经验总结与分享
5.1 升级最佳实践
- 升级前准备:
- 充分备份数据库
- 测试升级过程
- 评估升级风险
- 制定回滚计划
- 升级执行:
- 选择合适的升级时间
- 严格按照升级步骤执行
- 监控升级过程
- 及时处理升级中的问题
- 升级后验证:
- 验证数据库功能
- 测试应用兼容性
- 监控系统性能
- 检查日志中的错误
- 回滚策略:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 在升级失败时及时回滚
5.2 迁移最佳实践
- 迁移前准备:
- 充分备份源数据库
- 评估目标环境
- 制定详细的迁移计划
- 测试迁移工具
- 迁移执行:
- 选择合适的迁移策略
- 严格按照迁移步骤执行
- 监控迁移过程
- 及时处理迁移中的问题
- 迁移后验证:
- 验证数据完整性
- 测试应用兼容性
- 监控系统性能
- 检查日志中的错误
- 回滚策略:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 在迁移失败时及时回滚
5.3 常见问题与解决方案
常见升级与迁移问题及解决方法
- 问题1:升级失败
- 症状:升级过程中出现错误
- 解决方案:检查错误日志;执行回滚;修复问题后重新升级
- 问题2:迁移失败
- 症状:迁移过程中出现错误
- 解决方案:检查错误日志;执行回滚;修复问题后重新迁移
- 问题3:应用兼容性问题
- 症状:升级或迁移后应用无法正常工作
- 解决方案:检查应用日志;更新应用代码;调整数据库配置
- 问题4:性能下降
- 症状:升级或迁移后系统性能下降
- 解决方案:优化数据库参数;重建索引;分析表统计信息
- 问题5:数据丢失
- 症状:升级或迁移后数据丢失
- 解决方案:从备份恢复;检查迁移过程;确保数据完整性
风哥提示:升级和迁移是数据库生命周期中的重要环节,正确的规划和执行可以确保系统的稳定性和可靠性。在生产环境中,应该充分准备,严格按照步骤执行,及时处理问题,并做好回滚准备。同时,应该在升级或迁移后进行充分的验证,确保系统的正常运行。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
