オブジェクトストアのバックアップ ================================ CloudNativePGは、オブジェクトストアでの継続的な物理バックアップとWALアーカイブを介して、PostgreSQLクラスターの **オンライン/ホットバックアップ** をネイティブにサポートしています。これは、データベースが常に稼働しており、ダウンタイムが必要なく、ポイントインタイムリカバリーが利用できることを意味します。 オペレーターは、 `Barman Cloud `_ ツールに基づいた継続的なバックアップインフラストラクチャをオーケストレーションできます。多くのPostgreSQLインスタンスをバックアップするBarmanサーバーで古典的なアーキテクチャを使用する代わりに、オペレーターは\ ``barman-cloud-wal-archive`` 、\ ``barman-cloud-check-wal-archive`` 、\ ``barman-cloud-backup`` 、\ ``barman-cloud-backup-list`` 、および\ ``barman-cloud-backup-delete`` ツールに依存します。その結果、ベースバックアップは_tarballs_になります。ベースバックアップとWALファイルは両方とも圧縮および暗号化できます。 このためには、 ``barman-cli-cloud`` が含まれるイメージを使用する必要があります。コミュニティPostgreSQLイメージと最新の\ ``barman-cli-cloud`` パッケージで構成されているため、このスコープにイメージ\ ``ghcr.io/cloudnative-pg/postgresql`` を使用できます。 .. Important:: Barmanクラウドで導入された機能強化を利用するため、システムでオペランドの最新バージョンを実行していることを常に確認して、クラスターのセキュリティ面を向上させます。 バックアップは、\ ``Cluster`` のプライマリまたは指定されたプライマリインスタンスから実行されます :ref:`レプリカクラスター <レプリカクラスター>` を参照してください 指定されたプライマリインスタンスの詳細については、 :ref:`スタンバイからのバックアップ <スタンバイからのバックアップ>` 。 共通オブジェクトストア ---------------------- :ref:`AWS S3 ` 、 :ref:`Microsoft Azure Blob Storage <付録A-バックアップ用の共通オブジェクトストア>` 、 :ref:`Google Cloud Storage ` 、または :ref:`MinIOゲートウェイ ` などの特定のオブジェクトストア、または互換性のあるプロバイダーを探している場合は、 :ref:`付録A-バックアップ用の共通オブジェクトストア <付録A-バックアップ用の共通オブジェクトストア>` を参照してください。 リテンション ポリシー --------------------- .. Important:: 現在、保持ポリシーはボリュームスナップショットでは使用できません。 CloudNativePGは、リカバリウィンドウに基づいて **リテンションポリシー** を使用して、バックアップオブジェクトストアからのバックアップファイルの自動削除を管理できます。 内部的には、保持ポリシー機能は\ ``barman-cloud-backup-delete`` と\ ``--retention-policy “RECOVERY WINDOW OF {{ retention policy value }} {{ retention policy unit }}”`` を使用します。 たとえば、次のように30日の保持ポリシーを使用してバックアップを定義できます。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster [...] spec: backup: barmanObjectStore: destinationPath: "" s3Credentials: accessKeyId: name: aws-creds key: ACCESS_KEY_ID secretAccessKey: name: aws-creds key: ACCESS_SECRET_KEY retentionPolicy: "30d" .. Note "There's more ...":: **リカバリウィンドウリテンションポリシー**は、 `current time - recovery window` によって決定される移動ポイントである_Point of Recoverability_ `PoR` の概念に焦点を当てています。 _first有効なバックアップ_は、`PoR` の前に最初に使用可能なバックアップです新しい順に。 CloudNativePGは、最初の有効なバックアップから始めて、`PoR` と最新の正常にアーカイブされたWALファイル間の任意の時点でクラスターを復旧できることを保証する必要があります。最初の有効なバックアップよりも古いベースバックアップは_obsolete_としてマークされ、次のバックアップが完了した後に完全に削除されます。 圧縮アルゴリズム ---------------- CloudNativePGは、デフォルトでバックアップとWALファイルを非圧縮方法でアーカイブします。ただし、 ``barman-cloud-backup`` バックアップ用および\ ``barman-cloud-wal-archive`` WALファイル用を介して次の圧縮アルゴリズムもサポートします。 - bzip2 - gzip - snappy バックアップとWALの圧縮設定は独立しています。 barman-cloud APIリファレンスの `DataBackupConfiguration `_ および `WALBackupConfiguration `_ セクションを参照してください。 アーカイブ時間、復元時間、およびサイズはアルゴリズムによって異なるため、ユースケースに応じて圧縮アルゴリズムを選択する必要があることに注意してください。 Barmanチームは、 Barman Cloudでサポートされているアルゴリズムのパフォーマンスの評価を実行しました。次の表は、ローカルのMinIO展開でバックアップが作成されるシナリオをまとめています。 Barman GitHubプロジェクトには、 `deeper analysis `_ が含まれています。 .. csv-table:: :header: Compression,Backup Time (ms),Restore Time (ms),Uncompressed size (MB),Compressed size (MB),Approx ratio :widths: 10,10,10,8,8,8 :align: left :class: longtable None,10927,7553,395,395,1:1 bzip2,25404,13886,395,67,5.9:1 gzip,116281,3077,395,91,4.3:1 snappy,8134,8341,395,166,2.4:1 バックアップオブジェクトのタグ付け ---------------------------------- Barman 2.18では、 ``barman-cloud-backup`` および\ ``barman-cloud-wal-archive`` を介してオブジェクトストアに保存する際のバックアップリソースのタグ付けのサポートを導入しました。その結果、PostgreSQLコンテナイメージにバージョン2.18以降のBarmanが含まれる場合、CloudNativePGでは、バックアップオブジェクト、つまりベースバックアップ、WALファイル、履歴ファイルのキーと値のペアとしてタグを指定できます。 ``.spec.backup.barmanObjectStore`` 定義では2つのプロパティを使用できます。 - ``tags`` バックアップオブジェクトとバックアップオブジェクトストアのアーカイブされたWALファイルに追加するキーと値のペアタグ - ``historyTags`` バックアップオブジェクトストアのアーカイブされた履歴ファイルに追加されるキーと値のペアタグ 以下のYAMLマニフェストの抜粋は、この機能の使用例を提供します。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster [...] spec: backup: barmanObjectStore: [...] tags: backupRetentionPolicy: "expire" historyTags: backupRetentionPolicy: "keep" backupおよびWALコマンドの追加オプション --------------------------------------- ``.spec.backup.barmanObjectStore.data`` および\ ``.spec.backup.barmanObjectStore.wal`` セクションの\ ``additionalCommandArgs`` プロパティを使用して、 ``barman-cloud-backup`` および\ ``barman-cloud-wal-archive`` コマンドに追加オプションを追加できます。このプロパティは、 ``barman-cloud-backup`` および\ ``barman-cloud-wal-archive`` コマンドに追加される文字列のリストです。 たとえば、 ``--read-timeout=60`` を使用して、接続の読み取りタイムアウトをカスタマイズできます。 ``barman-cloud-backup`` および\ ``barman-cloud-wal-archive`` コマンドでサポートされる追加オプションについては、公式バーマンドキュメント `here `_ を参照してください。 ``additionalCommandArgs`` で提供されるオプションが、そのセクション\ ``.spec.backup.barmanObjectStore.data`` または\ ``.spec.backup.barmanObjectStore.wal`` の宣言されたオプションに既に存在する場合、追加のオプションは無視されます。 次に、このプロパティの使用方法の例を示します。 バックアップの場合 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster [...] spec: backup: barmanObjectStore: [...] data: additionalCommandArgs: - "--min-chunk-size=5MB" - "--read-timeout=60" WALファイルの場合 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster [...] spec: backup: barmanObjectStore: [...] wal: additionalCommandArgs: - "--max-concurrency=1" - "--read-timeout=60"