
還原演練:沒測試過的備份不算備份
沒有測試過的備份,不算備份
這句話值得放在最前面。
實務上很常見的情況是:備份檔案每天都在產生,看起來一切正常。直到真的需要還原時,才發現用不了。
而那個時刻,通常是最沒有餘裕處理的時刻。
備份失效的常見原因
| 原因 | 症狀 |
|---|---|
| 備份不完整 | 只有檔案沒有資料庫,還原出空殼 |
| 檔案損毀 | 無法解壓縮或匯入中斷 |
| 編碼錯誤 | 還原後中文全是亂碼 |
| 缺少組件 | 預存程序、觸發器沒有備份到 |
| 腳本早就失敗 | 檔案是舊的,但沒人發現 |
| 加密密碼遺失 | 檔案在但打不開 |
| 版本不相容 | 舊備份無法還原到新環境 |
這些問題都只有在實際還原時才會浮現。
演練的三個層級
層級一:檔案檢查(每月)
最低限度的確認,花不到十分鐘:
- 備份檔案的時間戳是否為最新
- 檔案大小是否合理——與上次相比是否異常
- 能否正常解壓縮
- 檔案數量是否符合預期
檔案大小突然變小是最明顯的警訊——可能代表備份過程中斷。
層級二:部分還原(每季)
- 把資料庫備份匯入測試環境
- 確認資料表數量與筆數
- 抽查幾筆資料的內容
- 確認中文顯示正常
層級三:完整演練(每半年)
在乾淨的環境還原整個網站並實際操作。這是唯一能真正確認備份可用的方式。
完整演練的流程
- 準備一個乾淨的測試環境——可用測試站或本機環境
- 取得備份檔案——用平常的取得方式,不要走捷徑
- 還原檔案與資料庫
- 調整設定——資料庫連線、網址設定
- 實際操作測試
- 記錄過程與所花的時間
第二步的重點
要用真實情境下的取得方式。 如果實際發生災難時需要從雲端下載,演練時就應該從雲端下載,而不是用手邊剛好有的檔案。
這樣才能發現「原來下載要三小時」這類問題。
演練時要確認的項目
- 首頁與主要頁面正常顯示
- 後台可以登入
- 中文與特殊字元正常——沒有亂碼
- 圖片與附件都在
- 資料筆數與正式站相符——文章數、會員數、訂單數
- 表單功能正常
- 會員登入正常
- 排程工作的設定是否包含在備份中
第五項最重要。 數量對不上就代表備份不完整,要找出原因。
記錄還原所需的時間
這是演練最有價值的產出之一。要記錄:
- 取得備份檔的時間
- 還原資料庫的時間
- 還原檔案的時間
- 調整設定與測試的時間
- 總共花了多久
為什麼重要
知道總時間,你才能回答一個關鍵問題:如果現在網站掛了,多久能恢復?
如果答案是「八小時」而業務只能接受「兩小時」,那就需要調整方案——例如改用更快的備份方式,或準備熱備援環境。
把流程寫成文件
演練時把步驟記錄下來,做成一份還原手冊:
- 備份存放的位置與取得方式
- 解密的方式與密碼保管處
- 還原的完整步驟
- 需要調整的設定項目
- 驗證的檢查清單
- 相關人員的聯絡方式
放在哪裡
不要只存在網站或主機上——真的需要它的時候,那些可能正好無法存取。
建議:紙本一份、離線可取得的位置一份。
演練會發現的典型問題
以下都是實際常見的情況:
- 「備份裡沒有資料庫」——只設定了檔案備份
- 「還原後中文變亂碼」——匯出時沒有指定字元集
- 「上傳的圖片都不見了」——上傳目錄不在備份範圍內
- 「不知道加密密碼」——設定的人已離職
- 「下載要花很久」——沒有考慮到檔案大小與頻寬
- 「不知道還原後要改哪些設定」——沒有文件
- 「最後一次成功的備份是三個月前」——腳本早就失敗了
每一項在演練時發現,都只是花一個下午;在真的災難時發現,代價完全不同。
誰來做演練
- 如果有維護廠商——可以要求納入服務範圍,並提供演練報告
- 如果自行管理——指定負責人與代理人
- 建議由「不是設定備份的那個人」執行——才能測出文件是否足夠清楚
最後一項很有價值。 設定的人憑記憶就能還原,但真的出事時可能是別人在處理。
納入合約或維護方案
建議明確約定:
- 多久做一次還原演練
- 演練的範圍與驗證項目
- 是否提供演練報告
- 發現問題時的處理方式
「有備份」與「備份可用」是兩件事,合約中值得分別寫清楚。
最小可行的起步
如果從來沒做過演練,建議這樣開始:
- 這個月先下載一份完整備份,確認能解壓縮
- 下個月把資料庫匯入測試環境,確認筆數與中文正常
- 下一季做一次完整還原,並記錄時間
- 把過程寫成文件
不必一開始就做到完美。 第一步的「確認能解壓縮」就已經能排除相當比例的問題了。
資料庫還原的技術細節見資料庫備份與還原的技術要點。
各主機商與服務商提供的備份機制差異很大,本文說明的是規劃原則與該確認的項目。實際的功能與條款請以服務商的現行說明為準。