備份有檔案不等於可還原:WooCommerce 還原演練要核對甚麼
備份外掛顯示「完成」,只表示某個流程跑完,不代表你能把同一個 WooCommerce 商店還原到可營運狀態。真正要驗的是:檔案與資料庫是否成組、HPOS 與執行環境是否兼容,以及還原副本在首次執行時會否接觸真實付款、電郵、webhook 與排程。
本文是一份還原驗收清單,不是備份外掛排名,也不是固定復原時間承諾。官方文件說明備份由檔案與資料庫組成 [1][2];以下有關隔離次序、sandbox 端點、egress 控制與 pass/fail 的做法,屬實務建議,不是 WordPress、WooCommerce 或主機商保證。功能層面的更新後驗收,可配合回歸測試;若問題是舊版面或舊價,先看快取排查。
先定驗收,再開副本。 不要以「首頁打得開」作通過標準。應在還原前寫明要驗的訂單、媒體、外掛/主題設定、受控結帳與外部副作用,並指定誰有權判定 pass 或 fail。
一、可還原的定義:一組狀態,不是一個壓縮檔
WordPress 官方文件明言,典型網站備份包含資料庫與檔案兩部分;資料庫通常以 SQL dump 等形式匯出,不能只靠下載 WordPress 目錄取得 [1][2]。檔案涵蓋核心、外掛、主題、uploads、wp-config.php 與 .htaccess 等;資料庫則承載文章、設定、使用者與 WooCommerce 資料。兩者要視為同一備份集。
主機層 snapshot 也不等於應用層驗收。Akamai 文件說明 Backups 是 file-level 而非 block-level,會在運行中做磁碟快照;MySQL 若在交易中被快照,資料檔可能 unclean,官方因此建議把例行 database dump 寫入檔案系統,隨每日備份保存;attached Block Storage volumes 亦不納入備份 [6]。所以主機備份不能代替一致性 database dump;應以 dump 配合對應檔案,另備 attached volumes。
WordPress XML 匯出不是完整網站備份。官方 Tools Export 建立 WXR/XML,包含文章、頁面、自訂內容、留言、欄位、分類與使用者 [7];不能代替 database dump、uploads、外掛/主題檔案、設定與執行環境。只交 XML,無法重建可結帳 WooCommerce 商店。
二、核對備份集:檔案、資料庫與環境要對得上
以下是實務核對表。每一列都要有證據,不能只寫「已備份」:
| 範圍 | 要核對 | 可接納證據 |
|---|---|---|
| 檔案 | 核心、外掛、主題、uploads、wp-config.php、伺服器設定 | 檔案清單、大小、校驗值、備份時間 |
| 資料庫 | 完整 dump、訂單與 HPOS 自訂表、網站設定 | dump 檔、匯入版本、表清單與筆數對照 |
| 執行環境 | PHP、MySQL/MariaDB、WordPress、WooCommerce 版本 | 版本清單與來源 |
| WooCommerce | HPOS 儲存模式、相容模式、待同步工作 | 設定截圖、Scheduled Actions 紀錄 [3][4] |
| 外部整合 | 付款、SMTP、webhook、CDN、快取、cron | 端點清單與 sandbox 替換紀錄 [5] |
HPOS 把訂單放進專用資料表,並可設相容模式同步到 posts 表;啟用或切換時亦可能安排背景回填工作 [3]。所以不能只問「有沒有 wp_posts」,要確認備份工具實際涵蓋了哪個儲存模式與哪些表。還原後亦要核對 HPOS 模式是否與備份時一致,避免介面看得到訂單、底層資料卻分散在另一個儲存位置。
「同一天備份」也不夠。請記錄備份開始與完成時間、當時是否有寫入、是否有維護窗口;若不能暫停寫入,便要在驗收時說明可能缺口。這些是風險說明,不是要求所有商店採取同一種備份方式。
三、先隔離,才讓還原副本執行
還原副本可能在第一個 HTTP 請求、WP-Cron 或 Action Scheduler 執行時就發出電郵、呼叫付款 API、送出 webhook,甚至處理正式客戶資料。隔離必須在副本可執行之前完成。
- 獨立目的地與資源。使用獨立主機、網絡、資料庫、快取與儲存;不要連接或寫入正式 DB、Redis、object storage。
- 先設定,再首次執行。副本啟動前先設好目的地與網絡規則,預設拒絕對外,只在明確允許時通往 sandbox;不要連正式付款、SMTP、webhook 或排程端點。還原的
wp-config.php、環境變數或快取設定可能覆蓋安全值,每次釋放應用前都要重驗仍連 sandbox。 - 認證不等於控制出口。Basic Auth 只保護 incoming access;
noindex只是請求不要索引;兩者都不控制 outgoing connections,不能阻止副本主動對外連線。 - 替換外部副作用。付款用測試閘道或 sandbox;電郵導入受控 mail sink,只接收、不能轉寄真實客戶;webhook 指向可丟棄接收端;結帳測試不得建立真實貨運、發票或退款。
- 換走正式 secret。還原可能帶回資料庫密碼、salts、API key 與 webhook secret [8];請改用 sandbox 或一次性憑證,不要把正式 secret 貼進工單、聊天或版本控制。
還原演練的五道閘門
- 01 · 核對檔案+資料庫+設定+執行環境
HPOS 儲存模式、版本與備份時間要對得上。
- 02 · 隔離不用正式端點,亦無公開路由
網絡、DB、快取與儲存都要獨立;Basic Auth 與 noindex 不控制出口。
- 03 · 切斷副作用付款、電郵、webhook、排程改用 sandbox
預設拒絕 egress;不要自動取消全部工作。
- 04 · 驗收訂單、媒體、設定、受控結帳
每項記錄 pass/fail;未測關鍵項標 blocked/未驗收。
- 05 · 對帳演練通過仍不是回滾保證
正式回滾前對帳付款、訂單、庫存與備份後變更。
記住:Basic Auth/noindex 不是隔離;備份成功也不是還原驗收。
下載完整 SVG 流程圖四、驗收:用業務結果決定 pass 或 fail
演練應抽樣代表性訂單,核對狀態、金額、稅項、運費、商品行與備註;測試媒體能否顯示與下載;檢查外掛、主題、運費、稅務、結帳欄位與電郵範本設定;再做一次受控結帳。受控結帳要能建立測試訂單、觸發測試通知與 webhook、反映預期庫存變化,但不得真正扣款、發送客戶電郵或安排出貨。未能測試的關鍵項要標為 blocked/未驗收,不可當成 pass。
每一項都要寫明預期結果、實際結果、證據位置、時間與負責人。任何關鍵項 fail,備份便不應被標示為「已驗收可還原」;修正後要重跑受影響項目,而不是只補一句「大致正常」。
五、演練通過,仍不等於正式回滾安全
還原演練證明「這個備份集在某個隔離環境可重建」,但不證明備份之後的新訂單、付款、退款、庫存變動、優惠券使用與客戶通知仍然存在。真正回滾前,先停止新結帳並在可行範圍凍結新的資料寫入,同時處理已在付款流程的 callback、非同步 webhook、退款與已排定寫入;先記錄外部付款商與佇列狀態,再對帳付款、訂單、庫存與備份後變更。單是關閉結帳不會令在途交易消失,亦不應把 staging DB 直接覆蓋回正式站。
因此,演練通過只是降低未知,不是保證零損失,也不承諾任何固定復原時間。若你要把副本改成正式站,應由店主與獲授權人員按實際資料、付款狀態與營運影響作決定。
常見問題
備份外掛顯示完成,是否已足夠?
不足。完成訊息只證明流程結束;仍要用同一備份集做還原與業務驗收。
只匯出 WordPress XML 可以嗎?
不可以當完整備份。官方 Tools Export 建立 WXR/XML,以內容與使用者資料為主,不能代替資料庫、uploads、外掛/主題檔案、設定與執行環境 [7]。
副本加了 Basic Auth 與 noindex,是否已隔離?
不是。它們不是網絡邊界,不能阻止副本主動連接正式付款、電郵或 webhook。
演練通過,是否代表回滾不會漏單?
不代表。備份之後的新交易與外部副作用仍要對帳及處理。
是否應先取消所有排程工作?
不應一律取消。先保存佇列證據、隔離對外連線,再按工作類型暫停或改路徑;全部清除可能同時抹掉調查線索與待處理業務。
資料來源
先證明可還原,再談回滾
Managed-WP.™ PRO 提供 WordPress 專業代管服務。若你正整理 WooCommerce 備份集、隔離演練或回滾前對帳,先把版本、HPOS 模式、外部端點與驗收紀錄整理好,再按實際環境確認支援範圍。
聯絡 Managed-WP.™ PRO若你需要按實際主機、WooCommerce 設定與團隊權限整理還原演練與驗收紀錄,可聯絡 Managed-WP.™ PRO。
編輯說明:本文由 Managed-WP.™ PRO 編輯團隊根據上述官方文件整理。標示為實務建議的內容不是 WordPress、WooCommerce、Akamai 或主機商的保證;版本、介面、備份範圍與功能可能變更,請以實際環境及最新官方文件為準。本文不構成法律、合規或復原時間承諾。