備份策略設計的本質是在備份窗口成本與恢復時間目標 (RTO)間找到最優解。單一頻率策略的困境:
多層級增量策略通過引入不同頻率的基礎備份層級,大幅壓縮恢復鏈長度。
| 層級 | 頻率 | 類型 | 範圍 | 保留 | 恢復鏈角色 |
|---|---|---|---|---|---|
| L0 基礎 | 每月 1 號 | Level 0 完整 | 全庫 (含唯讀) | 6 個月 | 月度恢復錨點 |
| L0 週基礎 | 每週日 | Level 0 累積基礎 | 全庫 (跳過唯讀) | 4 週 | 週度恢復錨點 |
| L1 週增量 | 每週一至六 | Level 1 累積 | 全庫 (跳過唯讀) | 2 週 | 每日變更累積 |
| L2 日增量 | 每日 | Level 1 差異 | 全庫 (跳過唯讀) | 7 天 | 最細粒度變更 |
| 歸檔日誌 | 每 4 小時/每備份後 | ARCHIVELOG | 所有歸檔 | 依策略 | 時間點恢復 |
假設月初第 1 天為月度 L0,某週三發生故障:
| 策略 | 需恢復組件 | 預估恢復步驟數 | RTO 特徵 |
|---|---|---|---|
| 僅月度 L0 + 歸檔 | 1×L0 + ~20 天歸檔 | 極多 | 不可接受 (小時~天) |
| 月度 L0 + 週度 L0 + 歸檔 | 1×L0(月) + 1×L0(週) + ~3 天歸檔 | 多 | 較長 |
| 四層級完整策略 | 1×L0(月) + 1×L0(週) + 1×L1(週) + 2×L2(日) + 歸檔 | 5-6 個備份集 + 歸檔 | 可控 (分鐘~小時) |
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/backup/rman/%d_MONTHLY_L0_%U';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT '/backup/rman/%d_MONTHLY_L0_%U';
ALLOCATE CHANNEL c3 DEVICE TYPE DISK FORMAT '/backup/rman/%d_MONTHLY_L0_%U';
BACKUP INCREMENTAL LEVEL 0
TAG 'MONTHLY_L0'
DATABASE
INCLUDE CURRENT CONTROLFILE
PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
RELEASE CHANNEL c3;
}
CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
DELETE NOPROMPT EXPIRED BACKUP;
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/backup/rman/%d_WEEKLY_L0_%U';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT '/backup/rman/%d_WEEKLY_L0_%U';
BACKUP INCREMENTAL LEVEL 0
TAG 'WEEKLY_L0'
DATABASE SKIP READONLY
PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/backup/rman/%d_DAILY_L1_%U';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT '/backup/rman/%d_DAILY_L1_%U';
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE
TAG 'DAILY_L1_CUM'
DATABASE SKIP READONLY
PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
-- 1. 冗餘保留:保留最近 2 份完整備份 (Level 0)
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
-- 2. 恢復窗口保留:保留可恢復至 30 天前任意時間點
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
-- 3. 歸檔日誌刪除策略:備份 2 次後可刪
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK;
-- 4. 控制檔自動備份
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/autobackup/%F';
| 類型 | 備份策略 | 理由 |
|---|---|---|
| 唯讀表空間 | 首次設為 READ ONLY 後完整備份一次,後續免備 | SCN 永不變化,無變更區塊 |
| 臨時表空間 | 完全不備份 | 遺失可 `DROP TABLESPACE ... INCLUDING CONTENTS AND DATAFILES` 重建 |
-- 設為唯讀前備份
ALTER TABLESPACE hist_data READ ONLY;
-- RMAN: BACKUP TABLESPACE hist_data; (一次性)
-- 後續備份自動跳過 (SKIP READONLY)
-- 原則:每次備份 (L0/L1/ARCH) 後刪除該點前已備份歸檔
-- 但建議:磁帶/冷存儲保留 1 年 (法規/審計/LogMiner 分析)
-- RMAN 自動管理 (FRA + 保留策略)
-- 手動管理腳本範例:
RUN {
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7' BACKED UP 2 TIMES TO DISK;
RELEASE CHANNEL;
}
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING; 讓增量備份無需掃描全庫,直接讀取位圖 → 大幅縮短增量備份時間| 驗證項目 | 頻率 | 目標指標 |
|---|---|---|
| 完整資料庫還原測試 | 每季 | RTO < 4 小時,資料零差異 |
| 時間點恢復 (PITR) 測試 | 每半年 | 指定 SCN 恢復成功 |
| 單表/Schema 還原 | 每月 | < 30 分鐘 |
| 備份集 VALIDATE | 每週 | 零損壞區塊 |
| 異地備份可用性檢查 | 每月 | 檔案完整、可讀取 |
多層級備份策略的精髓在於:建立多頻率恢復錨點 (L0 月/週) + 細粒度變更捕獲 (L1 累積/差異) + 連續時間點保護 (歸檔)。配合 RMAN 保留策略自動化清理、BCT 加速增量、定期恢復演練,即可在可控成本下達成企業級 RPO/RTO 目標。策略非一成不変,需隨資料增長、業務變化、技術演進持續調優。