クラウドスナップショットを使用したバックアップ#

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

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

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

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

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

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

  • 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スナップショットの前提条件#

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

このライブラリはオプショナルの依存関係であり、 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 タグを持つリソースを見つけます。 0または複数の一致するリソースが見つかった場合、 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 を参照してください。