Backup on object stores#

EDB CloudNativePGグローバルクラスターは、オブジェクトストアでの物理バックアップとWALアーカイブを介してPGDクラスターのオンライン/ホットバックアップ_をサポートします。これは、データベースが常に稼働しており、ダウンタイムが必要なく、ポイントインタイムリカバリPITRが利用できることを意味します。

共通オブジェクトストア#

AWS S3、Microsoft Azure Blob Storage、Google Cloud Storage、MinIO Gateway、またはS3互換プロバイダーなど、複数のオブジェクトストアがサポートされています。 EDB CloudNativePGグローバルクラスターがEDB CloudNativePGクラスターに依存してオブジェクトストアとの接続を構成することを考えると、 ` EDB CloudNativePG Cluster common object stores for backups <https://www.enterprisedb.com/docs/postgres_for_kubernetes/latest/object_stores/>`_ を参照してください。

詳細については、ドキュメントを参照してください。

重要

EDB CloudNativePG クラスタードキュメントのクラウドプロバイダー構成セクションは、 spec.backup.barmanObjectStore で入手できます。 EDB CloudNativePGグローバルクラスターの例では、オブジェクトストアセクションは別のパス`spec.backup.configuration.barmanObjectStore` にあります。

WALアーカイブ#

WALアーカイブは、WALファイルをオブジェクトストレージに送信するプロセスであり、オンライン/ホットバックアップまたはPITRを実行することが重要です。 EDB CloudNativePG Global Clusterでは、各PGDノードはオブジェクトストアにWALファイルを個別にアーカイブするように設定されます。

WALアーカイブはPGD Group spec.backup.configuration.barmanObjectStore スタンザで定義され、宛先パスとクラウド資格情報が設定されるとすぐに有効になります。 WALファイルはアップロードされる前に圧縮し、暗号化できます。パラレルWALアーカイブを有効にすることもできます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
[...]
spec:
  backup:
    configuration:
      barmanObjectStore:
        [...]
        wal:
          compression: gzip
          encryption: AES256
          maxParallel: 8

詳細については、 :ref:` EDB CloudNativePG Cluster WAL archiving <Backup on object stores>` ドキュメントを参照してください。

スケジュールされたバックアップ#

スケジュールされたバックアップは、EDB CloudNativePGグローバルクラスターでバックアップ戦略を構成するための推奨される方法です。 PGDグループ spec.backup.configuration.barmanObjectStore および.spec.backup.schedulers[].schedule スタンザが構成されている場合、オペレーターはScheduled Backup リソースを作成する選択したバックアップノードとしてPGDデータノードの1つを選択します。

.spec.backup.schedulers[].method フィールドでは、スケジュールされたバックアップ方法を定義できます。 2つのバックアップ方法がサポートされています。

  • volumeSnapshot

  • barmanObjectStore デフォルト

複数のスケジューラーを定義できますが、各メソッドは1つのスケジューラーのみが使用できます。つまり、2つのスケジューラーが同じメソッドを使用することはできません。

オブジェクトストアのバックアップの場合、デフォルトのbarmanObjectStore 方法では、スタンザ spec.backup.configuration.barmanObjectStore を使用して、バックアップとWALアーカイブの両方のオブジェクトストア情報を定義します。詳細については、EDB CloudNativePGクラスタードキュメントの Backup on object stores を参照してください。

volumeSnapshotバックアップを実行するには、 volumeSnapshot 方法を選択できます。スタンザ spec.backup.configuration.barmanObjectStore.volumeSnapshot を使用して、volumeSnapshot構成を定義します。詳細については、EDB CloudNativePGクラスタードキュメントの Backup on volume snapshots を参照してください。

この例は、バックアップにvolumeSnapshot メソッドを使用する方法を示しています。 WALアーカイブは引き続きBarmanオブジェクトストアで行われます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
[...]
spec:
  backup:
    configuration:
      volumeSnapshot:
        className: csi-hostpath-snapclass
      barmanObjectStore:
        destinationPath: "<destination path here>"
        s3Credentials:
          accessKeyId:
            name: backup-storage-creds
            key: ID
          secretAccessKey:
            name: backup-storage-creds
            key: KEY
        wal:
          compression: gzip
          encryption: AES256
          maxParallel: 8
    schedulers:
    - method: volumeSnapshot
      schedule: "0 0 0  **  *"
      backupOwnerReference: self
      suspend: false
      immediate: true

これら2つのバックアップ方法の比較については、EDB CloudNativePG クラスタードキュメントの Object stores or volume snapshots を参照してください。

.spec.backup.schedulers[].schedule フィールドでは、 Go `cron package format <https://pkg.go.dev/github.com/robfig/cron#hdr-CRON_Expression_Format>`_ で表現されるcronスケジュールを定義できます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
[...]
spec:
  backup:
    schedulers:
    - method: barmanObjectStore
      schedule: "0 0 0  **  *"
      backupOwnerReference: self
      suspend: false
      immediate: true

必要に応じて、.spec.backup.schedulers[].suspend をtrue に設定することにより、スケジュールされたバックアップを一時停止できます。この設定により、新しいバックアップがスケジュールされなくなります。

ScheduledBackup リソースが作成されたらすぐにバックアップを実行したい場合は、 .spec.backup.schedulers[].immediate をtrue に設定します。

.spec.backupOwnerReference は、作成したバックアップリソースで使用するownerReference を示します。オプションは次のとおりです。

  • none —作成したバックアップオブジェクトの所有者参照を設定しません。

  • 自分自身 — ScheduledBackup オブジェクトをバックアップの所有者として設定します。

  • クラスター —クラスターをバックアップの所有者として設定します。

警告

.spec.backup.cron フィールドは非推奨です。代わりに`.spec.backup.schedulers` を使用してください。 .spec.backup.cron は引き続き使用できますが、 .spec.backup.schedulers と同時に使用することはできません。

注釈

EDB CloudNativePGクラスター ScheduledBackup オブジェクトには、バックアップするクラスターを指定する`cluster` オプションが含まれています。このオプションは現在EDB CloudNativePGグローバルクラスターでサポートされておらず、指定されても無視されます。

選択されたバックアップノードが削除される場合、オペレーターは新しいバックアップノードを透過的に選択し、それに応じてScheduledBackup リソースを調整します。

リテンション ポリシー#

EDB CloudNativePG Global クラスターは、リカバリウィンドウに基づいて保持ポリシーを使用して、バックアップオブジェクトストアからのバックアップファイルの自動削除を管理できます。このプロセスは、未使用のWALファイルと、削除がスケジュールされているバックアップに関連付けられているWALの削除も行います。

30日の保持ポリシーを使用してバックアップを定義できます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
[...]
spec:
  backup:
    configuration:
      retentionPolicy: "30d"

詳細については、EDB CloudNativePGクラスタードキュメントの :ref:` EDB CloudNativePG Cluster retention policies <Backup on object stores>` を参照してください。

重要

現在、保持ポリシーは、選択された`Backup Node` バックアップとWALファイルにのみ適用されます。他の各PGDノードも自分のWALを独立してアーカイブすることを考えると、オブジェクトストレージデータ保持ポリシーを活用するなど、これらのWALファイルのライフサイクルを管理するのはあなたの責任です。また、すべてのPGDノードディレクトリにオブジェクトストレージデータ保持ポリシーを設定している場合、オペレーターが管理する保持ポリシーと重複または干渉していないことを確認します。

圧縮アルゴリズム#

バックアップとWALファイルはデフォルトで非圧縮です。ただし、複数の圧縮アルゴリズムがサポートされています。詳細については、 :ref:` EDB CloudNativePG Cluster compression algorithms <Backup on object stores>` ドキュメントを参照してください。

バックアップオブジェクトのタグ付け#

バックアップオブジェクト、つまりベースバックアップ、WALファイル、履歴ファイルのキーと値のペアとしてタグを指定できます。詳細については、 tagging of backup objects に関するEDB CloudNativePGクラスタードキュメントを参照してください。

PGDノードのオンデマンドバックアップ#

PGDノードは、単一インスタンスのEDB CloudNativePGクラスター Cluster オブジェクトとして表されます。そのため、必要に応じて、EDB CloudNativePGクラスター Backup リソースを作成することにより、特定のPGDノードのオンデマンドバックアップを要求できます。これを行うには、EDB CloudNativePGクラスタードキュメントの :ref:` EDB CloudNativePG Cluster on-demand backups <Backup on object stores>` を参照してください。

ヒント

kubectl get cluster -l k8s.pgd.enterprisedb.io/group=my-pgd-group -n my-namespace を実行して、PGDグループを構成するEDB CloudNativePG Clusterクラスターのリストを取得できます。