1. 首页 > 国产数据库教程 > openGauss教程 > 正文

opengauss教程FG051-openGauss备份集管理与过期清理生产实战

本文档详细介绍openGauss数据库备份集管理与过期清理的生产实战方法,包括备份集的查看、管理、过期策略配置、自动化清理等内容,风哥教程参考openGauss官方文档数据库管理指南、备份恢复指南等内容,适合DBA人员在日常运维和生产环境中使用。

Part01-基础概念与理论知识

1.1 openGauss备份集的概念与组成

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查看备份集

# 切换到opengauss用户
# 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 删除指定备份集

更多学习教程公众号风哥教程itpux_com
# 删除指定备份集(谨慎操作)
$ 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 按保留天数清理过期备份

# 删除7天前的过期备份
$ 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 按保留数量清理过期备份

# 只保留最近5个全量备份
$ 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 备份集监控脚本

#!/bin/bash
# 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 存储满应急处理流程

# 步骤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 自动化清理脚本

#!/bin/bash
# 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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息