オブジェクトストアのバックアップ
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
を使用できます。
重要
Barmanクラウドで導入された機能強化を利用するため、システムでオペランドの最新バージョンを実行していることを常に確認して、クラスターのセキュリティ面を向上させます。
バックアップは、Cluster
のプライマリまたは指定されたプライマリインスタンスから実行されます
レプリカクラスター を参照してください
指定されたプライマリインスタンスの詳細については、 スタンバイからのバックアップ 。
共通オブジェクトストア
AWS S3 、 Microsoft Azure Blob Storage 、 Google Cloud Storage 、または MinIOゲートウェイ などの特定のオブジェクトストア、または互換性のあるプロバイダーを探している場合は、 付録A-バックアップ用の共通オブジェクトストア を参照してください。
リテンション ポリシー
重要
現在、保持ポリシーはボリュームスナップショットでは使用できません。
CloudNativePGは、リカバリウィンドウに基づいて リテンションポリシー を使用して、バックアップオブジェクトストアからのバックアップファイルの自動削除を管理できます。
内部的には、保持ポリシー機能はbarman-cloud-backup-delete
と--retention-policy “RECOVERY WINDOW OF {{ retention policy value }} {{ retention policy unit }}”
を使用します。
たとえば、次のように30日の保持ポリシーを使用してバックアップを定義できます。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
[...]
spec:
backup:
barmanObjectStore:
destinationPath: "<destination path here>"
s3Credentials:
accessKeyId:
name: aws-creds
key: ACCESS_KEY_ID
secretAccessKey:
name: aws-creds
key: ACCESS_SECRET_KEY
retentionPolicy: "30d"
圧縮アルゴリズム
CloudNativePGは、デフォルトでバックアップとWALファイルを非圧縮方法でアーカイブします。ただし、
barman-cloud-backup
バックアップ用およびbarman-cloud-wal-archive
WALファイル用を介して次の圧縮アルゴリズムもサポートします。
bzip2 - gzip - snappy
バックアップとWALの圧縮設定は独立しています。 APIリファレンスの DataBackupConfiguration {postgresql-cnpg-io-v1-DataBackupConfiguration} および WalBackupConfiguration {postgresql-cnpg-io-v1-WalBackupConfiguration} セクションを参照してください。
アーカイブ時間、復元時間、およびサイズはアルゴリズムによって異なるため、ユースケースに応じて圧縮アルゴリズムを選択する必要があることに注意してください。
Barmanチームは、 Barman Cloudでサポートされているアルゴリズムのパフォーマンスの評価を実行しました。次の表は、ローカルのMinIO展開でバックアップが作成されるシナリオをまとめています。 Barman GitHubプロジェクトには、 deeper analysis が含まれています。
Compression |
Backup Time (ms) |
Restore Time (ms) |
Uncompressed size (MB) |
Compressed size (MB) |
Approx ratio |
|---|---|---|---|---|---|
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マニフェストの抜粋は、この機能の使用例を提供します。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
[...]
spec:
backup:
barmanObjectStore:
[...]
tags:
backupRetentionPolicy: "expire"
historyTags:
backupRetentionPolicy: "keep"
backupコマンドの追加オプション
.spec.backup.barmanObjectStore.data
セクションのadditionalCommandArgs プロパティを使用して、
barman-cloud-backup
コマンドに追加オプションを追加できます。このプロパティは、barman-cloud-backup
コマンドに追加される文字列のリストです。たとえば、 --read-timeout=60
を使用して、接続の読み取りタイムアウトをカスタマイズできます。
barman-cloud-backup
でサポートされる追加オプションについては、公式バーマンドキュメント
here を参照してください。
additionalCommandArgs
で提供されるオプションがbarmanObjectStore
セクションの宣言されたオプションに既に存在する場合、追加のオプションは無視されます。
次に、このプロパティの使用方法の例を示します。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
[...]
spec:
backup:
barmanObjectStore:
[...]
data:
additionalCommandArgs:
- "--min-chunk-size=5MB"
- "--read-timeout=60"