クラウドスナップショットによるバックアップ

Barmanは、ストレージボリュームのスナップショットを作成することにより、特定のクラウド環境内に展開されたPostgreSQLサーバーのバックアップを作成できます。このように構成すると、PostgreSQLファイルの物理バックアップはクラウドに保存されたボリュームスナップショットになり、 BarmanはWALおよびバックアップカタログのストレージサーバーとして機能します。これらのバックアップは、バックアップデータ自体がクラウドに保存されている場合でも、 rsync またはpostgres バックアップ方法で取得された従来のバックアップと同じようにBarmanで管理できます。

適切なPostgreSQLサーバーで スナップショット用のbarman-cloud-backup コマンドを直接使用して、 Barmanサーバーなしでスナップショットバックアップを作成することもできます。

クラウドスナップショットの前提条件

Barmanでスナップショットバックアップ方法を使用するには、展開が次の前提条件を満たす必要があります。

  • PostgreSQLは、サポートされているクラウドプロバイダー内のコンピューティングインスタンスにデプロイする必要があります。

  • PostgreSQLは、PGDATAやテーブルスペースデータなどのすべての重要なデータが、スナップショットをサポートするストレージボリュームに保存されるように構成する必要があります。

  • findmnt コマンドがPostgreSQLホストで使用可能である必要があります。

重要

PGDATA外部に保存された構成ファイルはスナップショットに含まれません。このようなファイルの管理は、構成管理システムなどの別のメカニズムを使用して実行する必要があります。

Google Cloud Platformのスナップショットの前提条件

google-cloud-computeおよびgrpcioライブラリは、 Barmanが使用するPythonディストリビューションで利用できる必要があります。これらのライブラリはオプションの依存関係であり、 Barmanパッケージによって標準としてインストールされることはありません。 pip を使用して、次のようにインストールできます。

pip3 install grpcio google-cloud-compute

注釈

google-cloud-computeライブラリに必要なPythonの最小バージョンは3.7です。 GCPスナップショットは、以前のバージョンのPythonでは使用できません。

Google Cloud Platformでのスナップショットバックアップには、次の追加の前提条件が適用されます。

  • スナップショットバックアップに含まれるすべてのディスクは、ゾーン永続ディスクである必要があります。リージョン永続ディスクは現在サポートされていません。

  • Barmanは、必要な権限セットを持つサービスアカウントを利用できる必要があります。これを行うには、そのようなアカウントをBarmanを実行しているコンピューティングインスタンスにアタッチするか(推奨)、 GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用して資格情報ファイルをポイントします。

必要な権限は次のとおりです。

  • compute.disks.createSnapshot

  • compute.disks.get

  • compute.globalOperations.get

  • compute.instances.get

  • compute.snapshots.create

  • compute.snapshots.delete

  • compute.snapshots.list

Azureスナップショットの前提条件

azure-mgmt-computeライブラリとazure-identityライブラリは、 Barmanが使用するPythonディストリビューションで利用できる必要があります。

これらのライブラリはオプションの依存関係であり、 Barmanパッケージによって標準としてインストールされることはありません。 pip を使用して、次のようにインストールできます。

pip3 install azure-mgmt-compute azure-identity

注釈

azure-mgmt-computeライブラリに必要なPythonの最小バージョンは3.7です。 Azure スナップショットは、以前のバージョンの Python では使用できません。

Azureでのスナップショットバックアップには、次の追加の前提条件が適用されます。

  • スナップショットバックアップに含まれるすべてのディスクは、データディスクとしてVMインスタンスに接続されているマネージドディスクである必要があります。

  • Barmanは、マネージドIDまたはCLIログインを使用して取得した資格情報を使用できる必要があり、これにより、必要なアクセス許可のセットでAzureへのアクセスを許可する必要があります。

次の権限が必要です。

  • Microsoft.Compute/disks/read

  • Microsoft.Compute/virtualMachines/read

  • Microsoft.Compute/snapshots/read

  • Microsoft.Compute/snapshots/write

  • Microsoft.Compute/snapshots/delete

AWSスナップショットの前提条件

Barmanが使用するPythonディストリビューションでboto3ライブラリを利用できる必要があります。

このライブラリはオプションの依存関係であり、 Barmanパッケージによって標準としてインストールされることはありません。 pip を使用して、次のようにインストールできます。

pip3 install boto3

AWSでのスナップショットバックアップには、次の追加の前提条件が適用されます。

  • スナップショットバックアップに含まれるすべてのディスクは、非ルートEBSボリュームである必要があり、同じVMインスタンスに接続されている必要があります。

  • NVMeボリュームは現在サポートされていません。

次の権限が必要です。

  • ec2:CreateSnapshot

  • ec2:CreateTags

  • ec2:DeleteSnapshot

  • ec2:DescribeSnapshots

  • ec2:DescribeInstances

  • ec2:DescribeVolumes

スナップショットバックアップの構成

クラウドスナップショットを介したバックアップ用にBarmanを構成するには、 backup_method パラメーターをsnapshot に設定し、 snapshot_provider をサポートされているクラウドプロバイダーに設定します。

backup_method = snapshot
snapshot_provider = gcp

現在、Google Cloud Platform(gcp )、Microsoft Azure(azure )、AWS(aws )がサポートされています。

クラウドプロバイダーに関係なく、次のパラメーターを設定する必要があります。

snapshot_instance = INSTANCE_NAME
snapshot_disks = DISK_NAME,DISK2_NAME,...

snapshot_instance は、ストレージボリュームが接続されているVMまたはコンピューティングインスタンスの名前に設定され、 snapshot_disks は、バックアップに含める必要があるディスクのコンマ区切りリストです。

重要

snapshot_disks に、PostgreSQLが必要とするデータを格納するすべてのディスクが含まれていることを確認する必要があります。 snapshot_disks にリストされているストレージボリュームに保存されていないデータはバックアップに含まれないため、回復時に利用できません。

Google Cloud Platformスナップショットの構成

GCPを使用する場合は、次の追加パラメーターを設定する必要があります。

gcp_project = GCP_PROJECT_ID
gcp_zone = ZONE

gcp_project は、 snapshot_instance およびsnapshot_disks で定義されたインスタンスとストレージボリュームを所有するGCPプロジェクトのIDに設定する必要があります。 gcp_zone は、インスタンスが配置されているアベイラビリティーゾーンに設定する必要があります。

Azureスナップショットの構成

Azureを使用する場合は、次の追加パラメーターを設定する必要があります。

azure_subscription_id = AZURE_SUBSCRIPTION_ID
azure_resource_group = AZURE_RESOURCE_GROUP

azure_subscription_id は、 snapshot_instance およびsnapshot_disks で定義されたインスタンスとストレージボリュームを所有するAzureサブスクリプションIDのIDに設定する必要があります。 azure_resource_group は、インスタンスとディスクが属するリソースグループに設定する必要があります。

AWSスナップショットの設定

snapshot_instance またはsnapshot_disks を指定する場合、 BarmanはAWS または 名前によってリソースに割り当てられたインスタンス/ボリュームIDを受け入れます。名前が使用されている場合、 BarmanはAWSにクエリを実行して、一致するName タグを持つリソースを見つけます。一致するリソースがゼロまたは複数見つかった場合、 Barmanはエラーで終了します。

AWSを使用する場合、次のオプションパラメーターを設定できます。

aws_region = AWS_REGION
aws_profile = AWS_PROFILE_NAME

aws_profile を使用する場合、AWS認証情報ファイルのセクションの名前に設定する必要があります。 aws_profile が使用されない場合、デフォルトのプロファイルが使用されます。資格情報ファイルが存在しない場合、資格情報は環境から取得されます。

aws_region が指定されている場合、AWSプロファイルで定義されている可能性のあるリージョンをオーバーライドします。

スナップショットバックアップの作成

構成オプションを設定し、 Barmanが適切な資格情報を利用できるようになると、

barman backup コマンドを使用してバックアップを取得できます。

Barmanは、 barman check コマンド中およびバックアップの開始時に、スナップショットバックアップの構成パラメーターを検証します。

backup_method = snapshot を使用する場合、次の引数/構成変数は使用できないことに注意してください。

Command argument

Config variable

N/A

backup_compression

--bwlimit

bandwidth_limit

--jobs

parallel_jobs

N/A

network_compression

--reuse-backup

reuse_backup

スナップショットバックアップの管理とリカバリに関する考慮事項を含む、スナップショットバックアップのより詳細な説明については、

cloud snapshots section in feature details を参照してください。