備份與還原
為 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 設定以及用戶端和身分識別提供者設定。
- Bob 資料庫(
- 資料庫綱要(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 執行- Controller 探索帶有
bob.ibm.com/backup-config: "true"標籤的 ConfigMap。 - Controller 為每個已設定的叢集建立 CronJob 和 PVC。
- CronJob 按排程執行,執行
pg_dump建立壓縮的 SQL 傾印。 - 備份指令碼管理保留,自動刪除舊備份。
- 每個備份都包含帶有時間戳記、大小和資料庫資訊的中繼資料檔案。
啟用備份後,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 叢集,實現環境之間的資料庫遷移。