第一部分:备份与还原核心原理
一、备份还原本质解析
-
数据存储机制
- 数据存储在物理文件页中(最小单位4K-32K)
- 有效数据页 = 文件描述页 + 已分配使用页
- 日志优先原则:操作先写REDO日志再更新数据文件
-
三大核心操作
操作 作用 关键特性 备份 复制有效页到备份集 需捕获备份期间的归档日志 还原 备份集→数据文件 仅恢复物理结构 恢复 重做日志到时间点 保证事务一致性 -
容灾价值
- 数据故障时恢复至故障前状态
- 支持时间点恢复(PITR)满足RPO要求
二、备份方式选择矩阵
类型 | 操作状态 | 归档要求 | 适用场景 | 恢复速度 |
---|---|---|---|---|
热备 | 数据库运行 | 需开启归档 | 7×24业务 | ★★★★☆ |
冷备 | 数据库关闭 | 无需归档 | 维护窗口期 | ★★★☆☆ |
增量 | 任意状态 | 热备需归档 | 生产环境日常 | ★★★★★ |
决策树 :
业务连续性要求高 → 热备
数据量>1TB → 增量备份
法规要求离线副本 → 冷备
第二部分:全量备份实操手册
一、热备全流程(联机备份)
前提条件:
- 开启本地归档(两种配置方式)
方法1:SQL命令配置归档
bash
# 启动服务
./DmAPService start # 启DMAP服务
./DmService start # 启数据库服务
# 配置归档
./disql SYSDBA/Dameng123@localhost:5236 <<EOF
alter database mount;
alter database add archivelog 'dest=/dm8/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400';
alter database archivelog;
alter database open;
EOF
# 执行全备
./disql -s "backup database full backupset '/dm8/full_$(date +%Y%m%d)'"
方法2:配置文件配置归档
bash
# 配置归档文件
cat > /dm8/data/DAMENG/dmarch.ini <<CONF
[ARCHIVE_LOCAL1]
ARCH_TYPE = local
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
CONF
# 启用归档
sed -i 's/ARCH_INI.*/ARCH_INI = 1/' /dm8/data/DAMENG/dm.ini
# 重启生效
./DmService restart
# 执行备份
./dmrman <<CMD
backup database full backupset '/dm8/full_$(date +%Y%m%d)';
exit
CMD
二、冷备全流程(脱机备份)
bash
# 关闭服务并启DMAP
./DmService stop
./DmAPService start
# 执行备份
./dmrman <<RMAN
backup database '/dm8/data/DAMENG/dm.ini'
backupset '/dm8/cold_full_$(date +%Y%m%d)';
exit
RMAN
# 验证备份
./dmrman "check backupset '/dm8/cold_full_$(date +%Y%m%d)'"
三、备份集还原实战
bash
# 停止数据库
./DmService stop
# 使用RMAN还原
./dmrman <<RECOVER
restore database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/full_20231001';
recover database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/full_20231001';
recover database '/dm8/data/DAMENG/dm.ini'
update db_magic;
exit
RECOVER
# 重启服务
./DmService start
第三部分:增量备份深度解析
一、增量备份原理
基础 仅变化页 70%空间节省 全量备份 增量备份 小型备份集 高效存储
二、增量备份类型对比
特性 | 差异增量(默认) | 累积增量 |
---|---|---|
基备份要求 | 全量/增量备份集 | 仅全量备份集 |
备份链长度 | 长(链式依赖) | 短(直连全量) |
空间效率 | ★★★★★ | ★★★☆☆ |
恢复复杂度 | 高 | 低 |
备份集丢失风险 | 高(链断裂失效) | 低 |
三、增量备份实战
1. 基础环境准备
sql
-- 创建基准全备(每周一执行)
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_mon';
2. 差异增量备份(每日)
sql
-- 周二增量(基于周一全量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_tue';
-- 周三增量(基于周二增量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_wed';
3. 累积增量备份(周四)
sql
-- 直接基于周一全量
BACKUP DATABASE INCREMENT CUMULATIVE
BACKUPSET '/dm8/backup/cum_thur';
4. 路径问题解决方案
sql
-- 显式指定基备份路径
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/backup'
BACKUPSET '/dm8/backup/new_incr';
四、增量备份恢复
bash
# 停止数据库
./DmService stop
# 还原差异增量链
./dmrman <<RESTORE
restore database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/backup/incr_wed'
with backupdir '/dm8/backup';
recover database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/backup/incr_wed';
recover database '/dm8/data/DAMENG/dm.ini'
update db_magic;
exit
RESTORE
关键区别 :
差异增量恢复需完整备份链
累积增量只需基础全量+本次备份
第四部分:企业级备份策略
一、推荐备份方案
calendar
| 时间 | 备份类型 | 保留策略 | 特点 |
|--------|--------------|----------------|--------------------------|
| 每周一 | 全量备份 | 永久保留 | 基准点 |
| 周二三 | 差异增量 | 保留7天 | 节省空间 |
| 周四 | 累积增量 | 保留30天 | 打破长链降低风险 |
| 周五 | 差异增量 | 保留7天 | 基于周四增量 |
| 每月1日| 异地冷备 | 离线存储12个月 | 满足合规要求 |
二、最佳实践清单
-
备份验证
bash# 每周执行校验 ./dmrman "check backupset '/dm8/backup/full_mon'"
-
归档管理
- 设置ARCH_SPACE_LIMIT防止磁盘写满
- 定期清理过期归档:
SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-30)
-
备份监控
sql-- 查询备份历史 SELECT * FROM V$BACKUPSET; -- 监控备份状态 SELECT backup_name, begin_time, end_time, (end_time - begin_time)*24*60 as duration_min FROM V$BACKUP_HISTORY;
三、灾难恢复口诀
三停 :停应用→停服务→停进程
四步走:
- 定位备份集(with backupdir)
- 还原数据文件(restore)
- 重做日志(recover)
- 更新魔数(update db_magic)
一验:启动前校验数据库一致性
第五部分:常见故障处理
一、典型错误解决方案
错误码 | 现象 | 解决方案 |
---|---|---|
[-8036] | 无基备份 | 1. 检查备份路径2. 使用with backupdir |
[-718] | 归档不完整 | 1. 检查归档空间2. 验证归档配置 |
[-610] | 备份集损坏 | 1. 校验备份集2. 从备用副本恢复 |
二、数据恢复SOP
-
场景1:单表误删除
sql-- 表级时间点恢复 RECOVER TABLE 'EMP' FROM BACKUPSET '/dm8/backup/full_mon' UNTIL TIME '2023-10-01 14:30:00';
-
场景2:全库损坏
bash# 使用增量备份恢复 dmrman restore... recover... update...
-
场景3:磁盘故障
bash# 替换磁盘后重做恢复 dmrman repair database '/new_path/dm.ini'
终极建议:
- 遵循3-2-1原则:3份备份、2种介质、1份异地
- 每月执行恢复演练:验证备份有效性
- 关键业务配置实时主备:DMDataWatch方案
通过合理运用热备、冷备与增量备份组合策略,可降低存储成本50%以上,缩短备份窗口70%,RTO控制在15分钟内,为业务系统提供坚若磐石的数据保障。