opengauss教程FG025-数据迁移实战
目录大纲
Part01-基础概念与理论知识
1.1 数据迁移概述
数据迁移是指将数据从一个环境转移到另一个环境的过程,了解迁移的概念和方法对于数据库的管理至关重要。风哥教程参考opengauss官方文档,数据迁移具有以下特点:
- 环境变更:从一个环境迁移到另一个环境
- 数据完整性:确保数据的完整性和一致性
- 业务连续性:最小化对业务的影响
- 性能优化:利用新环境的优势
1.2 迁移类型
openGauss支持的迁移类型:
- 同版本迁移:
- 在相同版本的openGauss之间迁移
- 迁移过程相对简单
- 主要是环境的变更
- 跨版本迁移:
- 在不同版本的openGauss之间迁移
- 需要考虑版本兼容性
- 可能需要升级步骤
- 跨平台迁移:
- 在不同操作系统或硬件平台之间迁移
- 需要考虑平台兼容性
- 可能需要重新编译
- 跨数据库迁移:
- 从其他数据库迁移到openGauss
- 需要考虑语法兼容性
- 可能需要数据转换
1.3 迁移工具
openGauss支持的迁移工具:
- gs_dump/gs_restore:
- 用于逻辑备份和恢复
- 支持多种格式
- 适用于中小型数据库
- gs_basebackup:
- 用于物理备份
- 速度快
- 适用于大型数据库
- 第三方工具:
- 如ETL工具
- 支持复杂的数据转换
- 适用于异构数据库迁移
风哥提示:选择合适的迁移工具对于迁移的成功至关重要,需要根据具体的迁移场景和数据量来选择。
Part02-生产环境规划与建议
2.1 迁移前规划
风哥提示:
生产环境迁移前规划建议
- 迁移目标:
- 明确迁移目标
- 评估目标环境
- 制定迁移计划
- 迁移策略:
- 全量迁移:一次性迁移所有数据
- 增量迁移:先迁移部分数据,再迁移剩余数据
- 双写迁移:同时在源和目标环境写入数据
- 测试环境:
- 在测试环境中进行迁移测试
- 验证迁移过程
- 测试应用兼容性
- 文档准备:
- 准备迁移文档
- 制定迁移计划
- 准备回滚计划
学习交流加群风哥微信: itpux-com
2.2 迁移时间安排
生产环境的迁移时间安排建议:
- 时间选择:
- 选择业务低峰期
- 避开重要业务活动
- 考虑系统维护窗口
- 时间预算:
- 预估迁移时间
- 预留足够的缓冲时间
- 考虑回滚时间
- 通知:
- 提前通知相关业务部门
- 告知用户系统维护时间
- 建立沟通机制
2.3 风险评估
数据迁移的风险评估建议:
- 风险识别:
- 识别潜在风险
- 评估风险影响
- 制定风险应对措施
- 回滚计划:学习交流加群风哥QQ113257174
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 业务影响:
- 评估对业务的影响
- 制定业务连续性计划
- 准备应急方案
Part03-生产环境项目实施方案
3.1 迁移前准备
# 检查源数据库状态
[opengauss@source ~]$ gs_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 检查源数据库版本
[opengauss@source ~]$ 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@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
更多视频教程www.fgedu.net.cn
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
更多学习教程公众号风哥教程itpux_com
gs_dump: dump completed successfully
# 检查目标环境
[opengauss@target ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 200G 50G 150G 25% /opengauss
# 传输备份文件到目标服务器
[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_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 检查源数据库版本
[opengauss@source ~]$ 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@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
更多视频教程www.fgedu.net.cn
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
更多学习教程公众号风哥教程itpux_com
gs_dump: dump completed successfully
# 检查目标环境
[opengauss@target ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 200G 50G 150G 25% /opengauss
# 传输备份文件到目标服务器
[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.2 迁移执行
# 在目标服务器上创建数据库
[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 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”
3.3 迁移后验证
# 验证数据完整性
from DB视频:www.itpux.com
[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 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.200 -p 5432 -U opengauss -d fgedudb -c “SELECT 1;
“
Password:
?column?
———-
1
(1 row)
# 检查日志
[opengauss@target ~]$ 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 5.0.0 build 12345 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
2024-01-01 12:34:56.127 CST [12345] LOG: database system is ready to accept connections
from DB视频:www.itpux.com
[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 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.200 -p 5432 -U opengauss -d fgedudb -c “SELECT 1;
“
Password:
?column?
———-
1
(1 row)
# 检查日志
[opengauss@target ~]$ 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 5.0.0 build 12345 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
2024-01-01 12:34:56.127 CST [12345] LOG: database system is ready to accept connections
Part04-生产案例与实战讲解
4.1 同版本迁移实战
# 检查源数据库状态
[opengauss@source ~]$ gs_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 备份源数据库
[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_ctl status -D /opengauss/fgdata
gs_ctl: server is running (PID: 12345)
/opengauss/app/bin/gaussdb “-D” “/opengauss/fgdata”
# 备份源数据库
[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.2 跨版本迁移实战
# 检查源数据库版本
[opengauss@source ~]$ 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@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 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@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 ~]$ 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@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 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@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 跨平台迁移实战
# 在源服务器(x86平台)上备份数据库
[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
# 传输备份文件到目标服务器(ARM平台)
[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
# 传输备份文件到目标服务器(ARM平台)
[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)
Part05-风哥经验总结与分享
5.1 迁移最佳实践
- 迁移前准备:
- 充分备份源数据库
- 评估目标环境
- 测试迁移过程
- 制定回滚计划
- 迁移执行:
- 选择合适的迁移工具
- 严格按照迁移步骤执行
- 监控迁移过程
- 及时处理迁移中的问题
- 迁移后验证:
- 验证数据完整性
- 测试应用兼容性
- 监控系统性能
- 检查日志中的错误
- 回滚策略:
- 制定详细的回滚计划
- 测试回滚过程
- 确保回滚的可行性
- 在迁移失败时及时回滚
5.2 常见问题与解决方案
常见迁移问题及解决方法
- 问题1:迁移过程中出现错误
- 症状:迁移过程中出现错误信息
- 解决方案:检查错误日志;分析错误原因;执行回滚;修复问题后重新迁移
- 问题2:迁移后数据丢失
- 症状:迁移后数据丢失
- 解决方案:从备份恢复;检查迁移过程;确保数据完整性
- 问题3:迁移后应用无法连接
- 症状:迁移后应用无法连接数据库
- 解决方案:检查网络连接;检查数据库配置;测试数据库连接;更新应用配置
- 问题4:迁移后性能下降
- 症状:迁移后系统性能下降
- 解决方案:优化数据库参数;重建索引;分析表统计信息;调整应用代码
- 问题5:跨平台迁移失败
- 症状:跨平台迁移过程中出现错误
- 解决方案:使用逻辑备份;确保目标平台支持;检查二进制兼容性
5.3 迁移后的维护建议
- 监控:
- 监控数据库状态
- 监控系统性能
- 监控应用兼容性
- 监控日志中的错误
- 优化:
- 优化数据库参数
- 重建索引
- 分析表统计信息
- 调整应用代码
- 备份:
- 迁移后进行全量备份
- 测试备份的可恢复性
- 更新备份策略
- 文档:
- 记录迁移过程
- 更新系统文档
- 分享迁移经验
风哥提示:数据迁移是数据库生命周期中的重要环节,正确的规划和执行可以确保系统的稳定性和可靠性。在生产环境中,应该充分准备,严格按照步骤执行,及时处理问题,并做好回滚准备。同时,应该在迁移后进行充分的验证和监控,确保系统的正常运行。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
