本文档详细介绍DM数据库备份集管理与过期清理的实战操作,包括备份集概念、备份集结构、过期策略、管理操作、清理方法、监控机制等内容,风哥教程参考DM官方文档《DM8备份与还原》手册,适合DBA人员进行备份集的有效管理。
Part01-基础概念与理论知识
1.1 DM数据库备份集的概念
DM数据库备份集(Backup Set)是指通过备份操作生成的包含备份数据的文件集合。每个备份集包含了数据库的完整或部分数据,用于数据库恢复。备份集管理是备份策略的重要组成部分。
- 以.bak为后缀的文件
- 包含备份元数据和备份数据
- 支持压缩和加密
- 可以通过备份集信息查询
- 支持备份集验证
1.2 DM数据库备份集结构
DM数据库备份集的结构组成:
- 备份集目录:包含备份文件和元数据
- 备份文件:存储实际的备份数据
- 元数据文件:记录备份集的详细信息
- 备份块:数据存储的基本单位
- 备份头:包含备份集的基本信息
1.3 DM数据库备份过期策略
DM数据库备份过期策略是指根据业务需求和存储容量,制定备份文件的保留时间和清理规则。合理的过期策略可以:
- 节省存储空间:及时清理过期备份
- 提高管理效率:减少备份集数量
- 保障数据安全:保留必要的备份
- 符合合规要求:满足数据保留期限
Part02-生产环境规划与建议
2.1 DM数据库备份集管理规划
生产环境DM数据库备份集管理规划要点:
#
# 备份集分类管理
– 全库备份:每月/每周备份
– 增量备份:每日备份
– 差异备份:每周末备份
– 归档备份:每小时备份
#
# 备份集命名规范
– 格式:类型_日期_时间
– 示例:FULL_20250409_020000
– 便于识别和管理
#
# 备份集存储规划
– 本地存储:快速恢复 风哥提示:
– 远程存储:灾备需求
– 异地存储:长期保留
2.2 DM数据库备份存储管理
DM数据库备份存储管理建议:
- 存储介质:使用高性能存储设备
- 存储容量:预留3-6个月的备份空间
- 存储分区:按备份类型分区存储
- 存储监控:实时监控存储空间使用情况
- 存储加密:敏感数据备份加密存储
2.3 DM数据库备份保留策略
生产环境DM数据库备份保留策略建议:
- 全库备份:保留4周
- 增量备份:保留2周
- 差异备份:保留3周
- 归档备份:保留7天
- 月度备份:保留6个月
- 年度备份:保留3年
Part03-生产环境项目实施方案
3.1 DM数据库备份集管理操作
3.1.1 查看备份集信息
$ disql SYSDBA/SYSDBA@192.168.1.10:5236
# 查看所有备份集
SQL> select backup_name, backup_path, backup_time, backup_type,
object_name, level, status
from v$backupset
order by backup_time desc;
行号 BACKUP_NAME BACKUP_PATH BACKUP_TIME BACKUP_TYPE OBJECT_NAME LEVEL STATUS
———- ———————— ———————————- ——————– ———– ———– —– ——
1 DB_FULL_20250409_020015 /dm/backup/full/backup_full_20250409.bak 2025-04-09 02:00:15 1 FGEDUDB 0 0
2 DB_INCR_20250408_010000 /dm/backup/incremental/incr_20250408.bak 2025-04-08 01:00:00 1 FGEDUDB 1 0
3 DB_FULL_20250402_020000 /dm/backup/full/backup_full_20250402.bak 2025-04-02 02:00:00 1 FGEDUDB 0 0
# 查看备份集详细信息
SQL> select * from v$backupset where backup_name=’DB_FULL_20250409_020015′;
行号 BACKUP_ID BACKUP_NAME BACKUP_PATH BACKUP_TIME BACKUP_TYPE
———- ——— ———————— ———————————- ——————– ———–
1 1 DB_FULL_20250409_020015 /dm/backup/full/backup_full_20250409.bak 2025-04-09 02:00:15 1
行号 OBJECT_NAME OBJECT_TYPE ENCRYPT_TYPE COMPRESS_TYPE LEVEL PARENT_BACKUP_ID STATUS
———- ———– ———– ———— ————- —– —————- ——
1 FGEDUDB 1 0 0 0 -1 0
3.1.2 验证备份集
SQL> check backupset ‘/dm/backup/full/backup_full_20250409.bak’;
操作已执行
已用时间: 00:00:15.234
# 验证所有备份集
SQL> select backup_name, check_backupset(backup_path) as check_result
from v$backupset
where backup_time > sysdate – 7;
行号 BACKUP_NAME CHECK_RESULT
———- ———————— ————
1 DB_FULL_20250409_020015 0
2 DB_INCR_20250408_010000 0
3 DB_FULL_20250402_020000 0
# 0表示验证成功,非0表示验证失败
3.2 DM数据库备份过期清理
3.2.1 手动清理过期备份
# 查看过期备份(超过30天)
SQL> select backup_name, backup_path, backup_time
from v$backupset
where backup_time < sysdate - 30; 行号 BACKUP_NAME BACKUP_PATH BACKUP_TIME ---------- ------------------------ ---------------------------------- -------------------- 1 DB_FULL_20250301_020000 /dm/backup/full/backup_full_20250301.bak 2025-03-01 02:00:00 2 DB_INCR_20250302_010000 /dm/backup/incremental/incr_20250302.bak 2025-03-02 01:00:00 # 手动删除过期备份文件 $ rm -f /dm/backup/full/backup_full_20250301.bak $ rm -f /dm/backup/incremental/incr_20250302.bak # 清理备份集元数据 SQL> delete from v$backupset
where backup_time < sysdate - 30; 影响行数 2
3.2.2 自动清理过期备份
# backup_cleanup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
export DM_HOME=/dm/app
export PATH=$DM_HOME/bin:$PATH
# 配置参数
BACKUP_DIRS=(“/dm/backup/full” “/dm/backup/incremental” “/dm/backup/archivelog”)
RETENTION_DAYS=30
LOG_FILE=”/dm/backup/log/cleanup_$(date +%Y%m%d).log”
# 日志函数
log() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] $1” >> $LOG_FILE
}
# 创建日志文件
mkdir -p “$(dirname $LOG_FILE)”
touch $LOG_FILE
log “开始清理过期备份…”
# 清理过期备份
for dir in “${BACKUP_DIRS[@]}”; do
log “检查目录: $dir”
# 查找并删除过期文件 更多视频教程www.fgedu.net.cn
expired_files=$(find “$dir” -name “*.bak” -mtime +$RETENTION_DAYS)
if [ -n “$expired_files” ]; then
log “发现过期备份文件:
$expired_files”
# 删除文件
find “$dir” -name “*.bak” -mtime +$RETENTION_DAYS -delete
log “已删除过期备份文件”
else
log “未发现过期备份文件”
fi
done
log “备份清理完成”
3.3 DM数据库备份集监控
3.3.1 监控备份集状态
$ disql SYSDBA/SYSDBA@192.168.1.10:5236 << EOF set linesize 200 column backup_name format a30 column backup_path format a60 column backup_time format a20 select backup_name, backup_path, backup_time, case status when 0 then '正常' else '异常' end as status from v$backupset where backup_time > sysdate – 7
order by backup_time desc;
EOF
行号 BACKUP_NAME BACKUP_PATH BACKUP_TIME STATUS
———- ———————— ———————————- ——————– ——
1 DB_FULL_20250409_020015 /dm/backup/full/backup_full_20250409.bak 2025-04-09 02:00:15 正常
2 DB_INCR_20250408_010000 /dm/backup/incremental/incr_20250408.bak 2025-04-08 01:00:00 正常
3 DB_FULL_20250402_020000 /dm/backup/full/backup_full_20250402.bak 2025-04-02 02:00:00 正常
3.3.2 监控备份存储使用情况
$ du -h –max-depth=2 /dm/backup/
/dm/backup/
total 1.2T 更多学习教程公众号风哥教程itpux_com
├── full/ 450G
├── incremental/ 280G
├── archivelog/ 420G
├── log/ 100M
└── script/ 5M
# 监控存储空间使用率
$ df -h /dm/backup
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 2.0T 1.2T 800G 60% /dm/backup
Part04-生产案例与实战讲解
4.1 DM数据库备份集清理实战
以下是一个完整的生产环境备份集清理案例:
# dm_backup_cleanup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 环境配置
export DM_HOME=/dm/app
export PATH=$DM_HOME/bin:$PATH
export ORACLE_SID=fgedudb
# 清理配置
FULL_RETENTION=30 # 全库备份保留30天
INCR_RETENTION=14 # 增量备份保留14天
ARCH_RETENTION=7 # 归档备份保留7天
BACKUP_BASE=/dm/backup
FULL_DIR=$BACKUP_BASE/full
INCR_DIR=$BACKUP_BASE/incremental
ARCH_DIR=$BACKUP_BASE/archivelog from DB视频:www.itpux.com
LOG_DIR=$BACKUP_BASE/log
# 创建日志目录
mkdir -p $LOG_DIR
LOG_FILE=$LOG_DIR/cleanup_$(date +%Y%m%d_%H%M%S).log
# 日志函数
log() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] $1” >> $LOG_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] $1”
}
log “开始执行备份集清理…”
# 清理全库备份
log “清理过期全库备份(保留$FULL_RETENTION天)”
expired_full=$(find $FULL_DIR -name “*.bak” -mtime +$FULL_RETENTION)
if [ -n “$expired_full” ]; then
log “发现过期全库备份:
$expired_full”
find $FULL_DIR -name “*.bak” -mtime +$FULL_RETENTION -delete
log “已删除过期全库备份”
else
log “未发现过期全库备份”
fi
# 清理增量备份
log “清理过期增量备份(保留$INCR_RETENTION天)”
expired_incr=$(find $INCR_DIR -name “*.bak” -mtime +$INCR_RETENTION)
if [ -n “$expired_incr” ]; then
log “发现过期增量备份:
$expired_incr”
find $INCR_DIR -name “*.bak” -mtime +$INCR_RETENTION -delete
log “已删除过期增量备份”
else
log “未发现过期增量备份”
fi
# 清理归档备份
log “清理过期归档备份(保留$ARCH_RETENTION天)”
expired_arch=$(find $ARCH_DIR -name “*.bak” -mtime +$ARCH_RETENTION)
if [ -n “$expired_arch” ]; then
log “发现过期归档备份:
$expired_arch”
find $ARCH_DIR -name “*.bak” -mtime +$ARCH_RETENTION -delete
log “已删除过期归档备份”
else
log “未发现过期归档备份”
fi
# 清理日志文件(保留30天)
log “清理过期日志文件”
find $LOG_DIR -name “*.log” -mtime +30 -delete
# 检查存储空间
log “检查备份存储使用情况”
du -h –max-depth=2 $BACKUP_BASE >> $LOG_FILE
df -h $BACKUP_BASE >> $LOG_FILE
log “备份集清理完成”
4.2 DM数据库备份保留自动化
通过crontab实现备份保留自动化:
$ crontab -e
# 每天凌晨3:00执行备份清理
0 3 * * * /dm/backup/script/dm_backup_cleanup.sh >> /dm/backup/log/crontab.log 2>&1
# 每周日凌晨4:00执行备份存储检查
0 4 * * 0 /dm/backup/script/check_backup_storage.sh >> /dm/backup/log/storage_check.log 2>&1
# 每月1日凌晨5:00执行备份完整性检查
0 5 1 * * /dm/backup/script/check_backup_integrity.sh >> /dm/backup/log/integrity_check.log 2>&1
4.3 DM数据库备份审计与报告
备份审计与报告脚本:
# backup_audit.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# 生成备份审计报告
export DM_HOME=/dm/app
export PATH=$DM_HOME/bin:$PATH
REPORT_FILE=”/dm/backup/report/backup_report_$(date +%Y%m%d).html”
mkdir -p “$(dirname $REPORT_FILE)”
# 生成HTML报告
cat > $REPORT_FILE << EOF
DM数据库备份审计报告
生成时间: $(date ‘+%Y-%m-%d %H:%M:%S’)
备份集状态
| 备份名称 | 备份路径 | 备份时间 | 备份类型 | 状态 |
|---|---|---|---|---|
| ‘ || backup_name || ‘ | ‘ || backup_path || ‘ | ‘ || to_char(backup_time, ‘yyyy-mm-dd hh24:mi:ss’) || ‘ | ‘ || case backup_type when 1 then ‘全库’ when 2 then ‘表空间’ when 3 then ‘表’ when 4 then ‘归档’ end || ‘ | 正常 |
存储使用情况
$(du -h --max-depth=2 /dm/backup/)
$(df -h /dm/backup)
备份策略执行情况
全库备份:每周日执行
增量备份:每天执行
归档备份:每小时执行
EOF
echo “备份审计报告已生成: $REPORT_FILE”
Part05-风哥经验总结与分享
5.1 DM数据库备份集管理最佳实践
基于多年DM数据库运维经验,总结以下备份集管理最佳实践:
- 备份命名规范:使用统一的命名规范,便于识别和管理
- 备份验证:每次备份后必须验证备份集完整性
- 过期清理:定期清理过期备份,避免存储浪费
- 存储监控:实时监控备份存储空间使用情况
- 备份归档:重要备份定期归档到异地存储
- 审计报告:定期生成备份审计报告,确保备份策略执行到位
5.2 DM数据库备份集管理常见问题
DM数据库备份集管理常见问题及解决方案:
# 问题1:备份集验证失败
#
# 原因分析
– 备份文件损坏
– 存储介质故障
– 备份过程被中断
#
# 解决方案
– 重新执行备份
– 检查存储介质
– 验证存储权限
#
# 问题2:备份存储空间不足
#
# 原因分析
– 备份保留策略不合理
– 数据量增长过快
– 过期备份未及时清理
#
# 解决方案
– 优化备份保留策略
– 增加存储空间
– 实施自动清理机制
#
# 问题3:备份集元数据丢失
#
# 原因分析
– 数据库异常关闭
– 元数据文件损坏
#
# 解决方案
– 重新注册备份集
– 从备份文件恢复元数据
5.3 DM数据库备份存储性能优化
DM数据库备份存储性能优化建议:
- 存储选择:使用SSD或高性能存储设备
- 存储配置:RAID 10配置,提高读写性能
- 备份压缩:启用备份压缩,减少存储占用
- 增量备份:采用增量备份策略,减少备份数据量
- 并行备份:启用并行备份,提高备份速度
- 网络传输:使用高速网络传输备份数据
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
