備份與還原

為 IBM Bob 本地部署設定、管理和還原 PostgreSQL 資料庫備份,以保護應用程式資料並支援復原情境。

IBM Bob 本地部署使用基於 ConfigMap 的備份設定模型,將備份操作與 Bob 自訂資源(CR)分離。備份工作透過 Kubernetes CronJob 自動排程與管理,支援可設定的保留原則和儲存設定。

PostgreSQL 備份會建立 IBM Bob 和 Keycloak 資料庫的可還原複本。這些備份可用於在服務中斷後復原資料、在叢集之間遷移資料,或將資料庫還原至先前已知良好的狀態。

IBM Bob 同時支援自動排程備份和手動執行備份。

主要功能

自動排程

備份透過 Kubernetes CronJob 自動執行。備份排程使用標準 cron 運算式定義,允許你根據維運和復原需求設定備份頻率。

自動保留管理

備份保留由系統自動管理,以協助控制儲存空間消耗。每次成功備份後,超過已設定保留限制的舊備份將被自動刪除。預設情況下,系統每個叢集保留最近七個備份。

多叢集備份支援

單一備份設定可管理多個 PostgreSQL 叢集的備份。Operator 會為每個已設定的叢集建立並維護專用備份資源,從而實現跨部署的集中備份管理。

PostgreSQL 映像檔自動偵測

備份系統可自動偵測並使用運作中資料庫叢集的 PostgreSQL 容器映像檔。這消除了手動指定映像檔版本的需要,並有助於確保備份工作與目標資料庫環境之間的相容性。

基於 ConfigMap 的設定

備份設定儲存在專用的 ConfigMap 中,與 Bob 自訂資源(CR)分離。這種分離簡化了維運管理,允許獨立修改備份排程、儲存設定和保留原則,而無需更改應用程式部署設定。

自動壓縮

資料庫傾印在儲存前會自動使用 gzip 壓縮。壓縮可減少儲存空間需求,並有助於在可用儲存容量內最佳化備份保留。

備份中繼資料追蹤

每個備份都包含一個中繼資料檔案,其中包含備份時間戳記、資料庫名稱、主機、連接埠和備份大小等詳細資訊。這些資訊有助於驗證備份完整性、追蹤備份歷程記錄,以及識別正確的還原備份。

備份包含的內容

資料庫備份會擷取重建資料庫環境所需的所有 PostgreSQL 資料庫物件和資料。

備份內容包括:

  • PostgreSQL 資料庫(如已設定):
    • Bob 資料庫(bob) — 主要應用程式資料庫,包括使用者帳戶和身分驗證資訊、專案和對話、程式碼分析結果以及應用程式專屬設定。
    • Keycloak 資料庫(app) — 用於身分驗證和身分管理的 Keycloak 資料庫,包括使用者憑證和設定檔資訊、OAuth 和 OpenID Connect(OIDC)設定、realm 設定以及用戶端和身分識別提供者設定。
  • 資料庫綱要(Schema) — 重建資料庫結構所需的所有物件,包括資料表、索引和條件約束;預存程序和函式;檢視表和觸發程序;以及序列和自訂型別。
  • 資料庫資料 — 備份程序使用 pg_dump 建立完整的 PostgreSQL 資料庫傾印,擷取資料庫資料表中儲存的所有資料、所有資料列和記錄,以及二進位大型物件(BLOB)(若存在)。

備份不包含的內容

PostgreSQL 備份不會擷取 Kubernetes 資源或應用程式設定。

以下項目必須另外管理:

  • ConfigMap
  • Secret
  • Deployment 和 Service
  • Ingress 資源
  • 應用程式日誌
  • 模型資料和嵌入(Embeddings)
  • 非資料庫的永續磁區

備份架構

IBM Bob 使用 Kubernetes 原生資源建立和管理資料庫備份。

元件用途
Bob 自訂資源啟用或暫停備份操作
備份 ConfigMap定義排程、儲存、保留原則和目標資料庫
CronJob執行排程備份
永續磁區宣告(PVC)儲存備份檔案
備份指令碼建立備份並管理保留

備份流程遵循以下工作流程:

Bob CR (enabled: true) → ConfigMap 探索 → Controller 調試 → CronJob 執行
  1. Controller 探索帶有 bob.ibm.com/backup-config: "true" 標籤的 ConfigMap。
  2. Controller 為每個已設定的叢集建立 CronJob 和 PVC。
  3. CronJob 按排程執行,執行 pg_dump 建立壓縮的 SQL 傾印。
  4. 備份指令碼管理保留,自動刪除舊備份。
  5. 每個備份都包含帶有時間戳記、大小和資料庫資訊的中繼資料檔案。

啟用備份後,Operator 會自動探索備份設定、建立所需資源,並按照已設定的頻率排程備份工作。

備份檔案結構

備份檔案儲存在專用永續磁區宣告(PVC)上。每個已設定的 PostgreSQL 叢集都有自己的目錄,其中包含備份檔案和關聯的中繼資料。

/backups/
├── bob-db/
│   ├── backup_bob_20260902_020000.sql.gz
│   └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
    ├── backup_app_20260902_020000.sql.gz
    └── backup_app_20260902_020000.sql.gz.meta

備份程序會為每個備份產生以下檔案:

  • .sql.gz — 壓縮的 SQL 傾印(純文字格式,gzip 壓縮)
  • .sql.gz.meta — 包含時間戳記、資料庫名稱、大小、主機和連接埠的中繼資料檔案

還原功能

IBM Bob 支援多種復原情境,協助你還原資料、從故障中復原以及在不同環境之間遷移資料庫:

  • 完整資料庫還原 — 從備份檔案還原整個 PostgreSQL 資料庫。
  • 時間點復原 — 根據時間戳記選擇所需的備份檔案,將資料庫還原至特定備份執行個體。
  • 跨叢集遷移 — 將備份還原至不同的 PostgreSQL 叢集,實現環境之間的資料庫遷移。
這個主題如何?