バックアップとリストア

IBM Bob オンプレミスの PostgreSQL データベースバックアップを設定、管理、リストアして、アプリケーションデータを保護し、復旧シナリオをサポートします。

IBM Bob オンプレミスは、バックアップ操作を Bob カスタムリソース (CR) から分離する ConfigMap ベースのバックアップ設定モデルを使用します。バックアップジョブは Kubernetes CronJob を通じて自動的にスケジュールおよび管理され、保持ポリシーとストレージ設定を設定できます。

PostgreSQL バックアップは IBM Bob および Keycloak データベースのリストア可能なコピーを作成します。これらのバックアップは、障害後のデータ復旧、クラスター間のデータ移行、または以前の正常なデータベース状態へのリストアに使用できます。

IBM Bob は、自動スケジュールバックアップと手動バックアップ実行の両方をサポートしています。

主な機能

自動スケジューリング

バックアップは Kubernetes CronJob を使用して自動的に実行されます。バックアップスケジュールは標準の cron 式を使用して定義され、運用要件と復旧要件に基づいてバックアップ頻度を設定できます。

自動保持管理

ストレージ消費を制御するために、バックアップの保持は自動的に管理されます。バックアップが正常に完了するたびに、設定された保持上限を超えた古いバックアップが削除されます。デフォルトでは、クラスターごとに最新の 7 件のバックアップが保持されます。

マルチクラスターバックアップサポート

単一のバックアップ設定で複数の PostgreSQL クラスターのバックアップを管理できます。オペレーターは設定された各クラスターに対して専用のバックアップリソースを作成および管理し、デプロイメント全体での集中バックアップ管理を可能にします。

PostgreSQL イメージの自動検出

バックアップシステムは、実行中のデータベースクラスターから PostgreSQL コンテナイメージを自動的に検出して使用できます。これにより、イメージバージョンを手動で指定する必要がなくなり、バックアップジョブとターゲットデータベース環境間の互換性が確保されます。

ConfigMap ベースの設定

バックアップ設定は、Bob カスタムリソース (CR) とは別の専用 ConfigMap に保存されます。この分離により、運用管理が簡素化され、バックアップスケジュール、ストレージ設定、保持ポリシーをアプリケーションデプロイメント設定とは独立して変更できます。

自動圧縮

データベースダンプは保存前に gzip を使用して自動的に圧縮されます。圧縮によりストレージ要件が削減され、利用可能なストレージ容量内でのバックアップ保持の最適化に役立ちます。

バックアップメタデータ追跡

各バックアップには、バックアップのタイムスタンプ、データベース名、ホスト、ポート、バックアップサイズなどの詳細を含むメタデータファイルが含まれます。この情報により、バックアップの整合性の検証、バックアップ履歴の追跡、リストアに適切なバックアップの特定が容易になります。

バックアップに含まれるもの

データベースバックアップは、データベース環境の再構築に必要なすべての PostgreSQL データベースオブジェクトとデータをキャプチャします。

バックアップに含まれるもの:

  • PostgreSQL データベース (設定されている場合):
    • Bob データベース (bob) — ユーザーアカウントと認証情報、プロジェクトと会話、コード分析結果、アプリケーション固有の設定を含むプライマリアプリケーションデータベース。
    • Keycloak データベース (app) — ユーザー認証情報とプロフィール情報、OAuth および OpenID Connect (OIDC) 設定、レルム設定、クライアントと ID プロバイダー設定を含む認証と ID 管理に使用される Keycloak データベース。
  • データベーススキーマ — テーブル、インデックス、制約;ストアドプロシージャと関数;ビューとトリガー;シーケンスとカスタムタイプを含む、データベース構造の再作成に必要なすべてのオブジェクト。
  • データベースデータ — バックアッププロセスは pg_dump を使用して完全な PostgreSQL データベースダンプを作成し、データベーステーブルに保存されたすべてのデータ、すべての行とレコード、バイナリラージオブジェクト (BLOB) (存在する場合) をキャプチャします。

バックアップに含まれないもの

PostgreSQL バックアップは Kubernetes リソースやアプリケーション設定をキャプチャしません。

以下の項目は別途管理する必要があります。

  • ConfigMap
  • Secret
  • Deployment と Service
  • Ingress リソース
  • アプリケーションログ
  • モデルデータと埋め込み
  • データベース以外の永続ボリューム

バックアップアーキテクチャ

IBM Bob は Kubernetes ネイティブリソースを使用してデータベースバックアップを作成および管理します。

コンポーネント目的
Bob カスタムリソースバックアップ操作を有効化または一時停止します
バックアップ ConfigMapスケジュール、ストレージ、保持、ターゲットデータベースを定義します
CronJobスケジュールされたバックアップを実行します
永続ボリュームクレームバックアップファイルを保存します
バックアップスクリプトバックアップを作成して保持を管理します

バックアッププロセスは以下のワークフローに従います。

Bob CR (enabled: true) → ConfigMap の検出 → コントローラーの調整 → CronJob の実行
  1. コントローラーは bob.ibm.com/backup-config: "true" ラベルを持つ ConfigMap を検出します。
  2. コントローラーは設定された各クラスターの CronJob と PVC を作成します。
  3. CronJob はスケジュールに従って実行され、pg_dump を実行して圧縮 SQL ダンプを作成します。
  4. バックアップスクリプトは保持を管理し、古いバックアップを自動的に削除します。
  5. 各バックアップにはタイムスタンプ、サイズ、データベース情報を含むメタデータファイルが含まれます。

バックアップが有効になると、オペレーターはバックアップ設定を自動的に検出し、必要なリソースを作成して、設定された頻度に従ってバックアップジョブをスケジュールします。

バックアップファイル構造

バックアップファイルは専用の永続ボリュームクレーム (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 クラスターにリストアし、環境間のデータベース移行を可能にします。
このトピックはいかがですか?