opengauss教程FG051-openGauss备份集管理与过期清理生产实战
本文档详细介绍openGauss数据库备份集管理与过期清理的生产实战方法,包括备份集的查看、管理、过期策略配置、自动化清理等内容,风哥教程参考openGauss官方文档数据库管理指南、备份恢复指南等内容,适合DBA人员在日常运维和生产环境中使用。
Part01-基础概念与理论知识
1.1 openGauss备份集的概念与组成
- 备份元数据:记录备份时间、类型、大小、状态等信息
- 数据文件:实际的数据库数据文件备份
- WAL日志:备份期间的预写日志文件
- 控制信息:备份集的控制文件和配置文件
1.2 openGauss备份集类型与特点
openGauss支持多种备份类型,不同类型的备份集具有不同的特点:
- 全量备份:备份整个数据库,恢复速度快,占用空间大
- 增量备份:只备份变化的数据,节省空间,恢复需要依赖链
- 差异备份:备份自上次全量备份后的变化,平衡空间与恢复速度
1.3 openGauss备份过期策略原理
备份过期策略是指根据业务需求和存储容量,自动识别和清理过期备份的机制:
1. 时间策略:根据备份创建时间判断是否过期
2. 数量策略:保留最近N个备份,超出部分自动清理
3. 容量策略:当备份存储达到阈值时清理最旧的备份
4. 保留周期:根据业务RPO要求设置保留天数
Part02-生产环境规划与建议
2.1 openGauss备份集存储规划
生产环境备份集存储规划要点:
– 全量备份大小:数据库实际大小的1.2-1.5倍
– 增量备份大小:全量备份的10%-30%
– 建议预留空间:当前数据量的3-5倍
# 存储路径规划
/opengauss/backup/full/ # 全量备份目录
/opengauss/backup/incr/ # 增量备份目录
/opengauss/backup/log/ # 备份日志目录
/opengauss/backup/script/ # 备份脚本目录
# 生产环境示例(500GB数据库)
全量备份:600GB × 3份 = 1800GB
增量备份:150GB × 7份 = 1050GB
日志文件:50GB
预留空间:500GB
总需求:约3.4TB
2.2 openGauss备份保留策略设计
备份保留策略设计建议:
- 学习交流加群风哥微信: itpux-com
- 全量备份:保留最近3-7个,建议每天1次
- 增量备份:保留最近7-14个,建议每天多次
- 归档日志:保留7-30天,根据RPO要求调整
- 特殊备份:重大变更前保留,长期保存
2.3 openGauss备份清理策略规划
备份清理策略规划:
1. 自动化清理:通过脚本或定时任务自动执行
2. 安全清理:清理前验证备份可用性
3. 分级清理:优先清理增量,保留全量
4. 异常保护:保留最近的2个全量备份不清理
# 清理触发条件
– 备份存储使用率超过80%
– 备份数量超过保留策略上限
– 备份文件超过保留天数
– 手动触发紧急清理
Part03-生产环境项目实施方案
3.1 openGauss查看备份集信息
3.1.1 使用gs_probackup查看备份集
# su – opengauss
# 查看备份目录中的所有备份集
$ gs_probackup show -B /opengauss/backup
BACKUP INSTANCE ‘fgedudb’
================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status学习交流加群风哥QQ113257174
================================================================================
fgedudb 9.2 QMR8YJ 2026-04-09 03:00:01+08 FULL STREAM 1/0 45m 485GB 2GB 1.05 0/12000028 0/150000F0 OK
fgedudb 9.2 QMR7XI 2026-04-08 03:00:15+08 FULL STREAM 1/0 42m 482GB 2GB 1.05 0/10000028 0/12000000 OK
fgedudb 9.2 QMR6WH 2026-04-07 03:00:08+08 FULL STREAM 1/0 44m 480GB 2GB 1.05 0/8000028 0/10000000 OK
fgedudb 9.2 QMR5VG 2026-04-09 15:00:22+08 PTRACK STREAM 1/1 8m 45GB 1GB 1.02 0/150000F0 0/16000000 OK
fgedudb 9.2 QMR4UF 2026-04-09 09:00:18+08 PTRACK STREAM 1/1 7m 42GB 1GB 1.02 0/14000000 0/15000000 OK
# 查看特定备份集的详细信息
$ gs_probackup show -B /opengauss/backup -i QMR8YJ –instance=fgedudb
# 输出示例
BACKUP ID: QMR8YJ
Instance: fgedudb
Version: 9.2
Recovery Time: 2026-04-09 03:00:01+08
Mode: FULL
WAL Mode: STREAM
TLI: 1/0
Time: 45m
Data: 485GB
WAL: 2GB
Zratio: 1.05
Start LSN: 0/12000028
Stop LSN: 0/150000F0
Status: OK
3.1.2 查看备份集存储使用情况
$ df -h /opengauss/backup
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 5.0T 2.8T 2.0T 59% /opengauss/backup
# 查看备份目录详细大小
$ du -sh /opengauss/backup/*
1.8T /opengauss/backup/backups
1.0T /opengauss/backup/wal更多视频教程www.fgedu.net.cn
50M /opengauss/backup/logs
# 查看备份目录下各实例大小
$ du -sh /opengauss/backup/backups/*
2.8T /opengauss/backup/backups/fgedudb
# 统计备份文件数量
$ find /opengauss/backup/backups/fgedudb -name “*.backup” | wc -l
15
3.2 openGauss备份集管理操作
3.2.1 验证备份集有效性
$ gs_probackup validate -B /opengauss/backup –instance=fgedudb -i QMR8YJ
INFO: Validate begin.
INFO: Validating backup QMR8YJ
INFO: Backup QMR8YJ data files are valid
INFO: Backup QMR8YJ WAL files are valid
INFO: Backup QMR8YJ is valid
INFO: Validate completed successfully
# 验证所有备份集
$ gs_probackup validate -B /opengauss/backup –instance=fgedudb
INFO: Validate begin.
INFO: Validating backup QMR8YJ…OK
INFO: Validating backup QMR7XI…OK
INFO: Validating backup QMR6WH…OK
INFO: Validating backup QMR5VG…OK
INFO: Validating backup QMR4UF…OK
INFO: Validate completed successfully
3.2.2 删除指定备份集
# 删除指定备份集(谨慎操作)
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb -i QMR4UF
INFO: Delete begin.
WARNING: Backup QMR4UF is a parent for the following backups: QMR5VG
WARNING: All dependent backups will be deleted
Do you want to delete backup QMR4UF and its dependent backups? (y/n) y
INFO: Deleting backup QMR4UF
INFO: Deleting backup QMR5VG
INFO: Delete completed successfully
# 强制删除不提示
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb -i QMR6WH –force
INFO: Delete begin.
INFO: Deleting backup QMR6WH
INFO: Delete completed successfully
# 查看删除后的备份列表
$ gs_probackup show -B /opengauss/backup –instance=fgedudb
BACKUP INSTANCE ‘fgedudb’
================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
================================================================================
fgedudb 9.2 QMR8YJ 2026-04-09 03:00:01+08 FULL STREAM 1/0 45m 485GB 2GB 1.05 0/12000028 0/150000F0 OK
fgedudb 9.2 QMR7XI 2026-04-08 03:00:15+08 FULL STREAM 1/0 42m 482GB 2GB 1.05 0/10000028 0/12000000 OK
3.3 openGauss过期备份清理实战
from DB视频:www.itpux.com
3.3.1 按保留天数清理过期备份
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb –retention-redundancy=7
INFO: Delete begin.
INFO: Retention redundancy: 7
INFO: Deleting expired backups…
INFO: Deleting backup QMR3TE (expired)
INFO: Deleting backup QMR2SD (expired)
INFO: Deleting backup QMR1RC (expired)
INFO: Delete completed successfully
# 查看清理后的备份列表
$ gs_probackup show -B /opengauss/backup –instance=fgedudb
BACKUP INSTANCE ‘fgedudb’
================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
================================================================================
fgedudb 9.2 QMR8YJ 2026-04-09 03:00:01+08 FULL STREAM 1/0 45m 485GB 2GB 1.05 0/12000028 0/150000F0 OK
fgedudb 9.2 QMR7XI 2026-04-08 03:00:15+08 FULL STREAM 1/0 42m 482GB 2GB 1.05 0/10000028 0/12000000 OK
fgedudb 9.2 QMR6WH 2026-04-07 03:00:08+08 FULL STREAM 1/0 44m 480GB 2GB 1.05 0/8000028 0/10000000 OK
fgedudb 9.2 QMR5VG 2026-04-06 03:00:12+08 FULL STREAM 1/0 43m 478GB 2GB 1.05 0/6000028 0/8000000 OK
fgedudb 9.2 QMR4UF 2026-04-05 03:00:05+08 FULL STREAM 1/0 41m 475GB 2GB 1.05 0/4000028 0/6000000 OK
fgedudb 9.2 QMR3TE 2026-04-04 03:00:20+08 FULL STREAM 1/0 40m 472GB 2GB 1.05 0/2000028 0/4000000 OK
fgedudb 9.2 QMR2SD 2026-04-03 03:00:18+08 FULL STREAM 1/0 42m 470GB 2GB 1.05 0/1000028 0/2000000 OK
3.3.2 按保留数量清理过期备份
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb –retention-window=5
INFO: Delete begin.
INFO: Retention window: 5
INFO: Deleting expired backups…
INFO: Deleting backup QMR2SD (exceeds retention window)
INFO: Deleting backup QMR1RC (exceeds retention window)
INFO: Delete completed successfully
# 查看清理后的备份列表
$ gs_probackup show -B /opengauss/backup –instance=fgedudb
BACKUP INSTANCE ‘fgedudb’
================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
================================================================================
fgedudb 9.2 QMR8YJ 2026-04-09 03:00:01+08 FULL STREAM 1/0 45m 485GB 2GB 1.05 0/12000028 0/150000F0 OK
fgedudb 9.2 QMR7XI 2026-04-08 03:00:15+08 FULL STREAM 1/0 42m 482GB 2GB 1.05 0/10000028 0/12000000 OK
fgedudb 9.2 QMR6WH 2026-04-07 03:00:08+08 FULL STREAM 1/0 44m 480GB 2GB 1.05 0/8000028 0/10000000 OK
fgedudb 9.2 QMR5VG 2026-04-06 03:00:12+08 FULL STREAM 1/0 43m 478GB 2GB 1.05 0/6000028 0/8000000 OK
fgedudb 9.2 QMR4UF 2026-04-05 03:00:05+08 FULL STREAM 1/0 41m 475GB 2GB 1.05 0/4000028 0/6000000 OK
Part04-生产案例与实战讲解
4.1 openGauss备份集监控与告警
4.1.1 备份集监控脚本
# backup_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
BACKUP_DIR=”/opengauss/backup”
INSTANCE=”fgedudb”
THRESHOLD=80
LOG_FILE=”/opengauss/backup/logs/monitor.log”
ALERT_EMAIL=”dba@fgedu.net.cn”
# 记录日志函数
log_message() {
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – $1” >> $LOG_FILE
}
# 检查备份目录使用率
check_disk_usage() {
USAGE=$(df -h $BACKUP_DIR | awk ‘NR==2 {print $5}’ | sed ‘s/%//’)
log_message “备份目录使用率: ${USAGE}%”
if [ $USAGE -gt $THRESHOLD ]; then
log_message “WARNING: 备份目录使用率超过阈值 ${THRESHOLD}%”
echo “备份目录使用率告警: ${USAGE}%” | mail -s “openGauss备份存储告警” $ALERT_EMAIL
fi
}
# 检查最新备份状态
check_latest_backup() {
LATEST_BACKUP=$(gs_probackup show -B $BACKUP_DIR –instance=$INSTANCE 2>/dev/null | grep -E “^\s*fgedudb” |
head -1)
if [ -z “$LATEST_BACKUP” ]; then
log_message “ERROR: 未找到有效备份”
echo “未找到有效备份” | mail -s “openGauss备份异常告警” $ALERT_EMAIL
return 1
fi
BACKUP_STATUS=$(echo $LATEST_BACKUP | awk ‘{print $NF}’)
BACKUP_TIME=$(echo $LATEST_BACKUP | awk ‘{print $4″ “$5}’)
log_message “最新备份时间: $BACKUP_TIME, 状态: $BACKUP_STATUS”
if [ “$BACKUP_STATUS” != “OK” ]; then
log_message “ERROR: 最新备份状态异常: $BACKUP_STATUS”
echo “备份状态异常: $BACKUP_STATUS” | mail -s “openGauss备份状态告警” $ALERT_EMAIL
fi
}
# 检查备份数量
check_backup_count() {
BACKUP_COUNT=$(gs_probackup show -B $BACKUP_DIR –instance=$INSTANCE 2>/dev/null | grep -c “fgedudb”)
log_message “当前备份数量: $BACKUP_COUNT”
if [ $BACKUP_COUNT -lt 3 ]; then
log_message “WARNING: 备份数量不足,当前只有 $BACKUP_COUNT 个备份”
fi
}
# 主函数
main() {
log_message “========== 备份监控开始 ==========”
check_disk_usage
check_latest_backup
check_backup_count
log_message “========== 备份监控结束 ==========”
}
main
4.1.2 执行监控脚本
$ chmod +x /opengauss/backup/script/backup_monitor.sh
# 执行监控脚本
$ /opengauss/backup/script/backup_monitor.sh
# 查看监控日志
$ cat /opengauss/backup/logs/monitor.log
2026-04-09 10:00:01 – ========== 备份监控开始 ==========
2026-04-09 10:00:02 – 备份目录使用率: 59%
2026-04-09 10:00:03 – 最新备份时间: 2026-04-09, 状态: OK
2026-04-09 10:00:04 – 当前备份数量: 7
2026-04-09 10:00:04 – ========== 备份监控结束 ==========
# 添加到定时任务(每2小时执行一次)
$ crontab -e
0 */2 * * * /opengauss/backup/script/backup_monitor.sh >/dev/null 2>&1
4.2 openGauss备份存储满处理
4.2.1 存储满应急处理流程
$ df -h /opengauss/backup
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 5.0T 4.8T 200G 97% /opengauss/backup
# 步骤2:查看备份详情,识别可清理的备份
$ gs_probackup show -B /opengauss/backup –instance=fgedudb
# 步骤3:紧急清理过期备份(保留最近3个)
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb –retention-window=3
INFO: Delete begin.
INFO: Retention window: 3
INFO: Deleting expired backups…
INFO: Deleting backup QMR4UF (exceeds retention window)
INFO: Deleting backup QMR3TE (exceeds retention window)
INFO: Deleting backup QMR2SD (exceeds retention window)
INFO: Delete completed successfully
# 步骤4:验证存储释放情况
$ df -h /opengauss/backup
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 5.0T 2.8T 2.0T 59% /opengauss/backup
# 步骤5:清理WAL归档日志(谨慎操作)
$ gs_probackup delete -B /opengauss/backup –instance=fgedudb –wal-depth=3
INFO: Delete begin.
INFO: WAL depth: 3
INFO: Deleting expired WAL files…
INFO: Delete completed successfully
4.3 openGauss自动化清理脚本
4.3.1 自动化清理脚本
# backup_cleanup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
BACKUP_DIR=”/opengauss/backup”
INSTANCE=”fgedudb”
RETENTION_DAYS=7
RETENTION_COUNT=5
DISK_THRESHOLD=80
LOG_FILE=”/opengauss/backup/logs/cleanup.log”
# 记录日志
log_message() {
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – $1” | tee -a $LOG_FILE
}
# 检查磁盘使用率
check_disk_usage() {
USAGE=$(df -h $BACKUP_DIR | awk ‘NR==2 {print $5}’ | sed ‘s/%//’)
echo $USAGE
}
# 清理过期备份
cleanup_expired_backups() {
log_message “开始清理过期备份…”
# 按保留数量清理
gs_probackup delete -B $BACKUP_DIR –instance=$INSTANCE –retention-window=$RETENTION_COUNT –force >>
$LOG_FILE 2>&1
if [ $? -eq 0 ]; then
log_message “过期备份清理完成”
else
log_message “ERROR: 过期备份清理失败”
fi
}
# 紧急清理(当磁盘使用率超过阈值)
emergency_cleanup() {
log_message “WARNING: 磁盘使用率超过阈值,执行紧急清理”
# 只保留最近2个备份
gs_probackup delete -B $BACKUP_DIR –instance=$INSTANCE –retention-window=2 –force >> $LOG_FILE 2>&1
# 清理过期WAL
gs_probackup delete -B $BACKUP_DIR –instance=$INSTANCE –wal-depth=2 –force >> $LOG_FILE 2>&1
log_message “紧急清理完成”
}
# 验证备份有效性
validate_backups() {
log_message “开始验证备份有效性…”
gs_probackup validate -B $BACKUP_DIR –instance=$INSTANCE >> $LOG_FILE 2>&1
log_message “备份验证完成”
}
# 主函数
main() {
log_message “========== 备份清理任务开始 ==========”
# 检查磁盘使用率
DISK_USAGE=$(check_disk_usage)
log_message “当前磁盘使用率: ${DISK_USAGE}%”
# 验证备份有效性
validate_backups
# 根据磁盘使用率决定清理策略
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
emergency_cleanup
else
cleanup_expired_backups
fi
# 再次检查磁盘使用率
DISK_USAGE=$(check_disk_usage)
log_message “清理后磁盘使用率: ${DISK_USAGE}%”
log_message “========== 备份清理任务结束 ==========”
}
main
4.3.2 配置定时任务
$ chmod +x /opengauss/backup/script/backup_cleanup.sh
# 编辑定时任务(每天凌晨2点执行清理)
$ crontab -e
# 添加以下行
0 2 * * * /opengauss/backup/script/backup_cleanup.sh >/dev/null 2>&1
# 查看定时任务
$ crontab -l
0 2 * * * /opengauss/backup/script/backup_cleanup.sh >/dev/null 2>&1
# 查看清理日志
$ tail -f /opengauss/backup/logs/cleanup.log
2026-04-09 02:00:01 – ========== 备份清理任务开始 ==========
2026-04-09 02:00:02 – 当前磁盘使用率: 59%
2026-04-09 02:00:03 – 开始验证备份有效性…
2026-04-09 02:05:15 – 备份验证完成
2026-04-09 02:05:16 – 开始清理过期备份…
2026-04-09 02:10:22 – 过期备份清理完成
2026-04-09 02:10:23 – 清理后磁盘使用率: 58%
2026-04-09 02:10:23 – ========== 备份清理任务结束 ==========
Part05-风哥经验总结与分享
5.1 openGauss备份集管理最佳实践
openGauss备份集管理最佳实践总结:
- 定期验证:每周至少验证一次备份集有效性
- 分级存储:近期备份使用高速存储,历史备份使用低速存储
- 异地备份:关键备份建议复制到异地存储
- 监控告警:设置存储使用率、备份状态等监控告警
- 文档记录:详细记录每次备份和清理操作
5.2 openGauss备份管理检查清单
□ 检查最新备份是否成功完成
□ 检查备份存储使用率
□ 检查备份日志是否有错误
# 每周检查项
□ 验证备份集有效性
□ 检查备份保留策略执行情况
□ 审查备份清理日志
□ 测试备份恢复流程
# 每月检查项
□ 全面审查备份策略
□ 评估存储容量规划
□ 更新备份文档
□ 演练灾难恢复流程
5.3 openGauss备份常见问题处理
备份管理常见问题及解决方案:
- 备份清理失败:检查备份集依赖关系,先清理子备份
- 存储空间不足:紧急清理过期备份,扩容存储设备
- 备份验证失败:检查备份文件完整性,重新执行备份
- 清理脚本异常:检查脚本权限和日志,手动执行排查
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
