2026 年 4 月,SaaS 平臺 PocketOS 遭遇了一場史無前例的“技術黑天鵝”:其內部使用的 AI 程式設計智慧體在嘗試自動修復報錯時,意外觸發了具有全域性最高許可權的 API,僅用 9 秒鐘就將整個生產環境的資料庫徹底清空。更致命的是,由於他們的備份資料與主庫儲存在同一個卷中,所有近期備份也隨之“同歸於盡”。

這起事件為所有技術團隊敲響了警鐘:在高度自動化的今天,破壞往往發生在毫秒之間,且完全不可預測。對於執行在生產環境中的閘道器係統而言,資料安全往往是最容易被推遲、卻最不應該被忽視的一環。OpenResty Edge 將所有流量路由規則、安全策略與應用配置集中儲存在資料庫中,這些配置是團隊長期積累的運維資產,無法從業務系統反向推導重建。一旦資料庫發生不可恢復的損壞,意味著需要從零重建所有閘道器規則。

OpenResty Edge 針對這一風險,提供了三個層次的資料保護機制,覆蓋從最基礎的定時備份到全自動故障轉移的完整能力譜系。三層方案相互補充,團隊可以根據業務對可用性的要求,選擇適合自身的保護組合。

第一層防線:定時備份與異機同步

這是所有部署環境都應當配置的基礎保護措施。OpenResty Edge 提供了專用的備份指令碼,分別對應兩類核心資料庫:Edge Admin DB(儲存所有應用配置資訊的核心資料庫)與 Edge Log Server DB(儲存日誌與統計指標資料)。指令碼支援手動觸發執行,也支援透過 crontab 配置為定時任務,實現無人值守的週期性備份。

在儲存策略上,備份檔案可以寫入本機指定目錄,同時支援透過 rsync 自動同步到遠端機器。這裡有兩點實踐建議值得特別關注:

  • 其一,本地備份目錄應當與資料庫位於不同的物理磁碟,否則磁碟故障會同時損毀資料庫與備份檔案;
  • 其二,強烈建議啟用遠端同步,本地備份檔案本身也存在丟失風險,異機儲存才能真正形成隔離。

指令碼還內建了備份輪轉機制,透過引數控制保留的備份份數,超出上限後自動清理最舊的檔案,避免磁碟空間無限增長。

當需要恢復時,流程為:解壓備份檔案,再透過 psql 匯入 SQL,完成全量恢復。具體操作步驟可參考官方技術文件。

需要如實說明的是,定時備份存在固有的時間視窗——兩次備份之間產生的資料變更無法透過此方式找回,且恢復過程通常需要停機操作。這是該方案的邊界,也是引入下一層保護機制的原因。

第二層防線:主從流複製

當業務對服務連續性有明確要求時,僅依賴定時備份是不夠的。主從流複製在此基礎上,將故障恢復能力提升到另一個量級。

該方案基於 PostgreSQL 原生的 streaming replication 機制,構建一主一從(Master-Standby)架構。從庫實時同步主庫的資料變更,在主庫發生故障時,可以將從庫提升為新的主庫,接管讀寫請求。與全量恢復相比,這一切換過程可以在分鐘級內完成。

OpenResty Edge 提供了互動式配置指令碼,將原本需要手動編輯多個 PostgreSQL 配置檔案的主從搭建過程,簡化為問答式的引導操作——依次輸入節點地址、資料目錄、複製使用者資訊等引數,指令碼自動完成配置與服務重啟。配置完成後,可透過查詢 pg_stat_replication 檢視驗證複製狀態是否正常建立。

有一點需要明確:主從複製不能替代定時備份。流複製會將所有資料變更(包括誤操作)同步到從庫,無法回滾到歷史時間點;而定時備份保留了多個歷史快照,兩者解決的是不同維度的問題,應當配合使用。

該方案的侷限在於:故障切換需要人工介入,且切換後需要手動更新應用程式的資料庫連線資訊。對於需要進一步降低人工干預的場景,第三層方案提供了更完整的答案。

第三層防線:自動故障轉移叢集

對於可用性要求最高的關鍵業務環境,OpenResty Edge 提供了高可用資料庫叢集管理工具,將故障恢復能力推進到自動化階段。

該方案在主從架構的基礎上引入了獨立的監控節點。監控節點持續檢測資料節點的健康狀態,當主節點發生故障時,自動將備用節點提升為新的主節點,整個過程無需人工介入。叢集由一個監控節點和兩個或多個資料節點(一主一備或一主多備)組成。

01

所有叢集操作——包括節點安裝、啟停、狀態查詢、HBA 配置管理、監控節點切換——均透過統一的命令列工具 openresty-edge-db-cluster-manager.sh 完成。工具還針對多種現實故障場景提供了明確的操作預案,例如:監控節點故障但資料節點正常、監控節點與備用節點同時故障、監控節點與主節點同時故障等,每種場景均有對應的恢復步驟。

在資源要求上,該方案需要為監控節點準備獨立的伺服器,且所有節點之間必須網路互通。工具文件中對各節點的硬體配置(記憶體、磁碟)也有明確的最低要求,部署前應當對照評估。

此外,工具提供了 -y 引數用於跳過互動確認,適合自動化指令碼場景,但文件明確警告:該引數會自動確認包括破壞性操作在內的所有提示,使用時需格外謹慎。

三層方案對比與選型建議

結合前文的刪庫事件可以清晰地看到:主從複製與自動叢集(熱備)雖然能完美應對硬體故障、保障業務高可用,但它們在面對「誤操作」或「惡意破壞」時卻無能為力——諸如 DROP DATABASE 的破壞性指令會被瞬間同步,導致主從節點「全軍覆沒」。

因此,定時備份(冷備)是任何高可用架構都無法替代的絕對底線。下表從幾個關鍵維度對三者進行對比:

維度定時備份主從流複製自動故障轉移叢集
核心防護目標資料丟失與歷史回滾單點故障導致的服務中斷故障恢復的人工依賴
恢復速度小時級(全量恢復)分鐘級(手動切換)自動切換
非預期刪除後的資料恢復可憑歷史備份回滾(受備份間隔限制)熱備會同步刪除等變更,無法單靠流複製恢復與主從相同:熱備同步誤刪,須依賴歷史備份
故障切換方式手動手動自動
額外資源需求磁碟空間 + 遠端機器1 臺從庫伺服器監控節點 + 1 臺以上從庫
運維複雜度中高
適用場景所有環境(必選)有服務連續性要求的生產環境對可用性要求最高的關鍵業務

選型建議:第一層是所有 OpenResty Edge 部署環境的必選項,無論規模大小;第二層推薦所有生產環境啟用;第三層適合對故障恢復時間和人工干預有嚴格要求的關鍵業務場景。在條件允許的情況下,三層方案同時部署可以提供最完整的資料保護覆蓋。

小結

資料庫備份是運維體系成熟度的基礎指標之一,其配置成本遠低於資料丟失後的恢復成本。正如前文提到的 PocketOS 刪庫事件,最大的教訓不僅在於主庫被毀,更在於“備份資料與生產環境在同一個爆炸半徑內”導致的安全防線全面崩潰。因此,對於 OpenResty Edge 的生產環境,建議將以下幾點納入運維規範:

  • Edge Admin DB 與 Edge Log Server DB 均配置定時備份
  • 本地備份目錄與資料庫目錄使用不同物理硬碟(避免單點物理故障)
  • 同時配置遠端同步,確保備份檔案有異地副本(避免同卷/同機房被一鍋端)
  • 定期檢查備份任務的執行狀態與檔案完整性
  • 在非生產環境定期演練恢復流程

參考文件

如需配置資料庫備份,可參考官方文件:

如需同時瞭解資料庫高可用配置,可參考:

關於 OpenResty Edge

OpenResty Edge 是一款專為微服務和分散式流量架構設計的全能型閘道器軟體,由我們自主研發。它集流量管理、私有 CDN 構建、API 閘道器、安全防護等功能於一體,幫助您輕鬆構建、管理和保護現代應用程式。OpenResty Edge 擁有業界領先的效能和可擴充套件性,能夠滿足高併發、高負載場景下的苛刻需求。它支援排程 K8s 等容器應用流量,並可管理海量域名,輕鬆滿足大型網站和複雜應用的需求。

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!