opengauss教程FG020-openGauss备份与恢复基础
目录大纲
Part01-基础概念与理论知识
1.1 备份概述
备份是数据库管理中非常重要的环节,了解备份的概念和方法对于数据库的安全和可靠性至关重要。风哥教程参考opengauss官方文档,备份具有以下特点:
- 数据保护:备份可以保护数据免受意外删除、硬件故障、自然灾害等因素的影响
- 灾难恢复:在发生灾难时,备份可以用于恢复数据库到正常状态
- 数据迁移:备份可以用于将数据从一个环境迁移到另一个环境
- 数据归档:备份可以用于归档历史数据
1.2 恢复概述
恢复是指将数据库从备份中恢复到正常状态的过程,了解恢复的概念和方法对于数据库的安全和可靠性至关重要:
- 完全恢复:将数据库恢复到备份时的状态
- 时间点恢复:将数据库恢复到指定的时间点
- 增量恢复:在全量备份的基础上,应用增量备份进行恢复
- 闪回恢复:使用闪回技术将数据库恢复到之前的状态
1.3 备份策略
备份策略是指根据业务需求和数据重要性制定的备份计划,包括:
- 全量备份:备份整个数据库
- 增量备份:备份自上次备份以来发生变化的数据
- 差异备份:备份自上次全量备份以来发生变化的数据
- 备份频率:根据数据变化频率和业务需求确定备份频率
- 备份存储:选择合适的存储介质和位置
- 备份验证:定期验证备份的有效性
风哥提示:制定合理的备份策略是数据库管理的重要环节,直接影响数据库的安全性和可靠性。
Part02-生产环境规划与建议
2.1 备份规划
生产环境备份规划建议
- 备份类型:
- 全量备份:每周一次
- 增量备份:每天一次
- 差异备份:每两天一次
- 备份时间:
- 选择业务低峰期进行备份
- 避免在系统负载高时进行备份
- 备份方式:
- 物理备份:使用gs_basebackup工具
- 逻辑备份:使用gs_dump和gs_dumpall工具
- 备份验证:
- 定期验证备份的有效性
- 测试恢复过程
2.2 恢复规划
生产环境的恢复规划建议:
- 恢复策略:
- 制定详细的恢复计划
- 明确恢复步骤和责任人
- 定期演练恢复过程
风哥提示:
- 恢复时间目标(RTO):
- 根据业务需求确定RTO
- 确保备份策略能够满足RTO要求
- 恢复点目标(RPO):
- 根据业务需求确定RPO
- 确保备份策略能够满足RPO要求
- 恢复测试:
- 定期进行恢复测试
- 验证恢复过程的有效性
2.3 存储规划
备份存储规划建议:
- 存储介质:
- 使用高性能存储
- 考虑使用云存储
- 使用冗余存储
学习交流加群风哥微信: itpux-com
- 存储位置:
- 异地存储:防止本地灾难
- 多副本存储:提高可靠性
- 存储管理:
- 定期清理过期备份
- 监控存储空间使用情况
- 实施备份轮换策略
Part03-生产环境项目实施方案
3.1 备份操作
# 全量物理备份
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full -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_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f /opengauss/backup/fgedudb_backup.sql
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
学习交流加群风哥QQ113257174
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
# 逻辑备份(全库级)
更多视频教程www.fgedu.net.cn
[opengauss@fgedu.net.cn ~]$ gs_dumpall -h 192.168.1.100 -p 5432 -U opengauss -f /opengauss/backup/full_backup.sql
Password:
gs_dumpall: dump all databases
gs_dumpall: dump completed successfully
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full -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_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f /opengauss/backup/fgedudb_backup.sql
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
学习交流加群风哥QQ113257174
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
# 逻辑备份(全库级)
更多视频教程www.fgedu.net.cn
[opengauss@fgedu.net.cn ~]$ gs_dumpall -h 192.168.1.100 -p 5432 -U opengauss -f /opengauss/backup/full_backup.sql
Password:
gs_dumpall: dump all databases
gs_dumpall: dump completed successfully
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 ~]$ rm -rf /opengauss/fgdata/*
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/* /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 postgres -f /opengauss/backup/fgedudb_backup.sql
Password:
SET
SET
SET
SET
SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
COPY 4
COPY 3
COPY 3
CREATE INDEX
更多学习教程公众号风哥教程itpux_com
CREATE INDEX
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
[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/fgdata/*
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/* /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 postgres -f /opengauss/backup/fgedudb_backup.sql
Password:
SET
SET
SET
SET
SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
COPY 4
COPY 3
COPY 3
CREATE INDEX
更多学习教程公众号风哥教程itpux_com
CREATE INDEX
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
3.3 备份管理
# 备份脚本示例
[opengauss@fgedu.net.cn ~]$ cat /opengauss/scripts/backup.sh
#!/bin/bash
# backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 备份目录
BACKUP_DIR=”/opengauss/backup”
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR/full/$DATE
# 全量物理备份
gs_basebackup -D $BACKUP_DIR/full/$DATE -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
# 逻辑备份
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_$DATE.sql
from DB视频:www.itpux.com
# 清理7天前的备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
# 执行备份脚本
[opengauss@fgedu.net.cn ~]$ chmod +x /opengauss/scripts/backup.sh
[opengauss@fgedu.net.cn ~]$ /opengauss/scripts/backup.sh
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
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@fgedu.net.cn ~]$ cat /opengauss/scripts/backup.sh
#!/bin/bash
# backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 备份目录
BACKUP_DIR=”/opengauss/backup”
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR/full/$DATE
# 全量物理备份
gs_basebackup -D $BACKUP_DIR/full/$DATE -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
# 逻辑备份
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_$DATE.sql
from DB视频:www.itpux.com
# 清理7天前的备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
# 执行备份脚本
[opengauss@fgedu.net.cn ~]$ chmod +x /opengauss/scripts/backup.sh
[opengauss@fgedu.net.cn ~]$ /opengauss/scripts/backup.sh
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
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
Part04-生产案例与实战讲解
4.1 全量备份与恢复
# 全量物理备份
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full/20240101 -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 ~]$ rm -rf /opengauss/fgdata/*
# 恢复数据库
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/20240101/* /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 count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full/20240101 -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 ~]$ rm -rf /opengauss/fgdata/*
# 恢复数据库
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/20240101/* /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 count(*) FROM fgedu_employee;
“
Password:
count
——-
4
(1 row)
4.2 增量备份与恢复
# 全量备份
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full/20240101 -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 “INSERT INTO fgedu_employee (name, age, dept_id, salary) VALUES (‘Sun Qi’, 28, 1, 8000.00);
“
Password:
INSERT 0 1
# 增量备份(使用WAL归档)
[opengauss@fgedu.net.cn ~]$ gs_ctl reload -D /opengauss/fgdata
server signaled
# 模拟数据库故障
[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/fgdata/*
# 恢复全量备份
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/20240101/* /opengauss/fgdata/
# 应用WAL日志进行增量恢复
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata -R
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 count(*) FROM fgedu_employee;
“
Password:
count
——-
5
(1 row)
[opengauss@fgedu.net.cn ~]$ gs_basebackup -D /opengauss/backup/full/20240101 -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 “INSERT INTO fgedu_employee (name, age, dept_id, salary) VALUES (‘Sun Qi’, 28, 1, 8000.00);
“
Password:
INSERT 0 1
# 增量备份(使用WAL归档)
[opengauss@fgedu.net.cn ~]$ gs_ctl reload -D /opengauss/fgdata
server signaled
# 模拟数据库故障
[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/fgdata/*
# 恢复全量备份
[opengauss@fgedu.net.cn ~]$ cp -r /opengauss/backup/full/20240101/* /opengauss/fgdata/
# 应用WAL日志进行增量恢复
[opengauss@fgedu.net.cn ~]$ gs_ctl start -D /opengauss/fgdata -R
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 count(*) FROM fgedu_employee;
“
Password:
count
——-
5
(1 row)
4.3 备份策略实战
# 创建备份策略脚本
[opengauss@fgedu.net.cn ~]$ cat /opengauss/scripts/backup_strategy.sh
#!/bin/bash
# backup_strategy.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 备份目录
BACKUP_DIR=”/opengauss/backup”
DATE=$(date +%Y%m%d)
WEEKDAY=$(date +%u)
# 创建备份目录
mkdir -p $BACKUP_DIR/full
mkdir -p $BACKUP_DIR/incremental
mkdir -p $BACKUP_DIR/logical
# 全量备份(每周日)
if [ $WEEKDAY -eq 7 ]; then
echo “Performing full backup…”
gs_basebackup -D $BACKUP_DIR/full/$DATE -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_full_$DATE.sql
# 增量备份(其他天)
else
echo “Performing incremental backup…”
# 这里使用WAL归档作为增量备份
gs_ctl reload -D /opengauss/fgdata
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_incremental_$DATE.sql
fi
# 清理30天前的备份
find $BACKUP_DIR/full -type d -mtime +30 -exec rm -rf {} \;
find $BACKUP_DIR/logical -name “*.sql” -mtime +30 -exec rm -f {} \;
# 设置定时任务
[opengauss@fgedu.net.cn ~]$ crontab -e
# 每天凌晨2点执行备份
0 2 * * * /opengauss/scripts/backup_strategy.sh >> /opengauss/logs/backup.log 2>&1
[opengauss@fgedu.net.cn ~]$ cat /opengauss/scripts/backup_strategy.sh
#!/bin/bash
# backup_strategy.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 备份目录
BACKUP_DIR=”/opengauss/backup”
DATE=$(date +%Y%m%d)
WEEKDAY=$(date +%u)
# 创建备份目录
mkdir -p $BACKUP_DIR/full
mkdir -p $BACKUP_DIR/incremental
mkdir -p $BACKUP_DIR/logical
# 全量备份(每周日)
if [ $WEEKDAY -eq 7 ]; then
echo “Performing full backup…”
gs_basebackup -D $BACKUP_DIR/full/$DATE -h 192.168.1.100 -p 5432 -U opengauss -F p -X stream
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_full_$DATE.sql
# 增量备份(其他天)
else
echo “Performing incremental backup…”
# 这里使用WAL归档作为增量备份
gs_ctl reload -D /opengauss/fgdata
gs_dump -h 192.168.1.100 -p 5432 -U opengauss -d fgedudb -f $BACKUP_DIR/logical/fgedudb_incremental_$DATE.sql
fi
# 清理30天前的备份
find $BACKUP_DIR/full -type d -mtime +30 -exec rm -rf {} \;
find $BACKUP_DIR/logical -name “*.sql” -mtime +30 -exec rm -f {} \;
# 设置定时任务
[opengauss@fgedu.net.cn ~]$ crontab -e
# 每天凌晨2点执行备份
0 2 * * * /opengauss/scripts/backup_strategy.sh >> /opengauss/logs/backup.log 2>&1
Part05-风哥经验总结与分享
5.1 备份与恢复最佳实践
- 备份策略:
- 制定合理的备份策略,包括全量备份和增量备份
- 选择合适的备份时间,避免业务高峰期
- 定期验证备份的有效性
- 备份方式:
- 物理备份和逻辑备份结合使用
- 使用WAL归档实现增量备份
- 考虑使用第三方备份工具
- 恢复策略:
- 制定详细的恢复计划
- 定期演练恢复过程
- 确保恢复时间在RTO范围内
- 存储管理:
- 使用异地存储防止本地灾难
- 定期清理过期备份
- 监控存储空间使用情况
5.2 性能优化要点
- 备份性能优化:
- 使用并行备份提高速度
- 选择合适的备份压缩方式
- 使用增量备份减少备份时间和存储空间
- 恢复性能优化:
- 使用并行恢复提高速度
- 优化恢复参数
- 使用快速恢复技术
- 存储性能优化:
- 使用高性能存储设备
- 优化存储I/O配置
- 考虑使用SSD存储
5.3 常见问题与解决方案
常见备份与恢复问题及解决方法
- 问题1:备份失败
- 症状:备份过程中出现错误
- 解决方案:检查数据库状态,确保数据库正常运行;检查备份目录权限;检查存储空间是否足够
- 问题2:恢复失败
- 症状:恢复过程中出现错误
- 解决方案:检查备份文件是否完整;检查数据库目录权限;检查存储空间是否足够
- 问题3:备份速度慢
- 症状:备份过程耗时过长
- 解决方案:使用并行备份;使用增量备份;优化存储I/O性能
- 问题4:备份空间不足
- 症状:备份过程中提示空间不足
- 解决方案:清理过期备份;使用压缩备份;增加存储空间
- 问题5:恢复时间过长
- 症状:恢复过程耗时过长
- 解决方案:使用并行恢复;优化恢复参数;使用快速恢复技术
风哥提示:备份与恢复是数据库管理的重要环节,直接关系到数据的安全性和可靠性。在生产环境中,应该制定合理的备份策略,选择合适的备份方式,定期验证备份的有效性,确保在发生灾难时能够快速恢复数据库。同时,应该注意备份的性能优化和存储空间管理,确保备份过程不会影响数据库的正常运行。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
