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

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

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

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

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

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

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

-  ``findmnt`` コマンドは、PostgreSQLホストで使用できる必要があります。

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

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

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

.. code:: bash

   pip3 install grpcio google-cloud-compute

..  NOTE ::
   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``
を使用して次のようにインストールできます。

.. code:: bash

   pip3 install azure-mgmt-compute azure-identity

..  NOTE ::
   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``
を使用して次のようにインストールできます。

.. code:: bash

   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``
をサポートされているクラウドプロバイダーに設定します。

.. code:: ini

   backup_method = snapshot
   snapshot_provider = gcp

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

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

.. code:: ini

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

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

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

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

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

.. code:: ini

   gcp_project = GCP_PROJECT_ID
   gcp_zone = ZONE

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

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

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

.. code:: ini

   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を使用する場合、次のオプションパラメータを設定できます。

.. code:: ini

   aws_region = AWS_REGION
   aws_profile = AWS_PROFILE_NAME
   aws_await_snapshots_timeout = TIMEOUT_IN_SECONDS

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

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

``aws_await_snapshots_timeout``
が設定されていない場合、デフォルトの\ ``3600`` 秒が使用されます。

スナップショットバックアップの取得
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

構成オプションが設定され、適切な資格情報をBarmanで利用できるようになると、
:ref:`barman backup <#backup>` コマンドを使用してバックアップを取得できます。

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

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

.. csv-table::
  :header: **Command argument**,**Config variable**
  :widths: 10,30
  :align: left
  :class: longtable

  N/A,`backup_compression`
  `--bwlimit`,`bandwidth_limit`
  `--jobs`,`parallel_jobs`
  N/A,`network_compression`
  `--reuse-backup`,`reuse_backup`

スナップショットバックアップの管理とリカバリーに関する考慮事項を含む、スナップショットバックアップのより詳細な議論については、
:ref:`cloud snapshots section in feature details <#cloud-snapshot-backups>`  を参照してください。
