Barman client utilities ( barman-cli\ ``)``
===========================================

以前は別のオープンソースプロジェクトであった\ ``barman-cli``
は、バージョン2.8からBarmanのコアにマージされ、RPM /
Debianパッケージとして配布されています。 ``barman-cli``
には、PostgreSQLサーバーとともにインストールする推奨されるクライアントユーティリティのセットが含まれています。

-  ``barman-wal-archive`` 「\ ``barman-wal-archive``
   を介したWALアーカイブ」セクションで説明しているように、\ ``archive_command``
   として使用するアーカイブスクリプト。

-  ``barman-wal-restore`` 上記の「\ ``get-wal``
   」セクションで説明したように、スタンバイサーバーと復旧サーバーで\ ``restore_command``
   復旧オプションの一部として使用されるWAL復元スクリプト。

詳細については、特定のマニュアルページまたは\ ``--help``
オプションを参照してください。

インストール
------------

Barmanクライアントユーティリティは、通常、PostgreSQLがインストールされている場所にインストールされます。私たちのお勧めは、プライマリまたはスタンバイであるすべてのPostgreSQLサーバーに\ ``barman-cli``
パッケージをインストールすることです。

リポジトリをインストールするには、メインの「インストール」セクションを参照してください。

``root`` としてRedHat /
CentOSシステムにパッケージをインストールするには、次のように入力します。

.. code:: bash

   yum install barman-cli

Debian / Ubuntuでは、\ ``root`` ユーザーとして次のように入力します。

.. code:: bash

   apt-get install barman-cli

Barman client utilities for the Cloud ( barman-cli-cloud\ ``)``
===============================================================

Barmanクライアントユーティリティは、オブジェクトストレージの統合をサポートし、WALファイルとバックアップをサポートされているクラウドプロバイダーに中継することにより、PostgreSQLデータベースのディザスターリカバリー機能を強化するように拡張されました。

サポートされているクラウドプロバイダーは次のとおりです。

-  AWS S3またはS3互換オブジェクトストア

-  Azure Blob Storage

-  Google Cloud Storage Rest API

これらのユーティリティは\ ``barman-cli-cloud``
RPM/Debianパッケージで配布され、PostgreSQLサーバーと一緒にインストールできます。

-  ``barman-cloud-wal-archive``
   Barmanサーバーをバイパスして、WALファイルをクラウドストレージに直接出荷するために使用されるアーカイブスクリプト。または、WALアーカイブ
   ``pre_archive_retry_script`` のフックスクリプトとして。

-  ``barman-cloud-wal-restore`` ``restore_command``
   として使用するスクリプトで、クラウドストレージからWALファイルを取得し、
   Barmanサーバーをバイパスし、PostgreSQLスタンバイに直接保存します。

-  ``barman-cloud-backup``
   PostgreSQLサーバーで直接ローカルバックアップをとり、
   Barmanサーバーをバイパスして、サポートされているクラウドプロバイダーに発送するために使用されるバックアップスクリプト。または、バーマンのバックアップをクラウドにコピーするためのフックスクリプトとして
   ``post_backup_retry_script)``

-  ``barman-cloud-backup-delete`` ``barman-cloud-backup``
   で取得した1つ以上のバックアップをクラウドストレージから削除し、関連するWALを削除するために使用されるスクリプト。

-  ``barman-cloud-backup-keep``
   クラウドストレージのバックアップにアーカイブバックアップとしてフラグを立てるために使用されるスクリプト。このようなバックアップは、適用される保持ポリシーに関係なく、永久に保持されます。

-  ``barman-cloud-backup-list``
   クラウドストレージから\ ``barman-cloud-backup``
   で取得したBarmanバックアップのコンテンツをリストするために使用されるスクリプト。

-  ``barman-cloud-backup-show`` ``barman-cloud-backup``
   で取得したBarmanバックアップのメタデータを表示するために使用されるスクリプト。

-  ``barman-cloud-restore``
   クラウドストレージから\ ``barman-cloud-backup``
   で直接取得したバックアップを復元するために使用するスクリプト。

これらのコマンドには、使用するクラウドプロバイダーの適切なライブラリが必要です。

-  AWS S3: https://github.com/boto/boto3) [boto3]

-  Azure Blob
   Storage：（https://docs.microsoft.com/en-us/python/api/azure-storage-blob/?view=azure-python)
   [azure-storage-blob]およびオプションで(https
   ://docs.microsoft.com/en-us/python/api/azure-identity/?view=azure-python)
   [azure-identity]

-  Google Cloud
   Storage：（https://cloud.google.com/storage/docs/reference/libraries)
   [google-cloud-storage]

aws-s3クラウドプロバイダーの資格情報を設定する方法については、
 `Credentials <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html>`_ を参照してください。

azure-blob-storageクラウドプロバイダーの資格情報については、
 `Environment variables for authorization parameters <https://docs.microsoft.com/en-us/azure/storage/blobs/authorize-data-operations-cli#set-environment-variables-for-authorization-parameters>`_ を参照してください。次の環境変数がサポートされています。\ ``AZURE_STORAGE_CONNECTION_STRING``
、\ ``AZURE_STORAGE_KEY`` 、および\ ``AZURE_STORAGE_SAS_TOKEN`` 。 Azure
Active Directoryを介して認証するために、 ``--credential``
オプションを使用して\ ``azure-cli`` または\ ``managed-identity``
資格情報を指定することもできます。

.. _インストール-1:

インストール
------------

クラウド用のBarmanクライアントユーティリティは、
Barmanをバイパスしてクラウドプロバイダーに直接バックアップするPostgreSQLサーバーにインストールする必要があります。

``barman-cloud-backup`` および/または\ ``barman-cloud-wal-archive``
をフックスクリプトとして使用する場合、
Barmanサーバーに\ ``barman-cli-cloud``
パッケージをインストールすることもできます。

リポジトリをインストールするには、メインの「インストール」セクションを参照してください。

``root`` としてRedHat /
CentOSシステムにパッケージをインストールするには、次のように入力します。

.. code:: bash

   yum install barman-cli-cloud

Debian / Ubuntuでは、\ ``root`` ユーザーとして次のように入力します。

.. code:: bash

   apt-get install barman-cli-cloud

barman-cloudフックスクリプト
----------------------------

上記のように、 Barmanサーバーに\ ``barman-cli-cloud``
パッケージをインストールします。

``barman-cloud-backup``
は、次のBarmanバックアップフレーバーのバックアップ後スクリプトとして使用できます。

-  ``backup_method = rsync`` で取得したバックアップ。

-  ``backup_compression`` を使用しない\ ``backup_method = postgres``
   で取得したバックアップ。

これを行うには、 Barmanのサーバー構成に次を追加します。

::

   post_backup_retry_script = barman-cloud-backup [ *OPTIONS* ]  *DESTINATION_URL*  ${BARMAN_SERVER}

..  WARNING When running as a hook script barman-cloud-backup requires that::
   バックアップのステータスはDONEで、バックアップが他のステータスの場合、失敗します。このため、バックアップは`-w / --wait` オプションを使用して実行して、バックアップのステータスが`WAITING_FOR_WALS` であるときにフックスクリプトが実行されないようにすることをお勧めします。

PostgreSQLサーバーのBarman構成に次を追加することにより、プレWALアーカイブスクリプトとして\ ``barman-cloud-wal-archive``
を構成します。

::

   pre_archive_retry_script = barman-cloud-wal-archive [ *OPTIONS* ]  *DESTINATION_URL*  ${BARMAN_SERVER}

クラウドプロバイダーの選択
--------------------------

``--cloud-provider``
オプションを使用して、バックアップとWALのクラウドプロバイダーを選択します。これは、次のいずれかに設定できます。

-  ``aws-s3`` [DEFAULT] AWS S3またはS3互換オブジェクトストア。

-  ``azure-blob-storage`` Azure Blob Storageサービス。

-  ``google-cloud-storage`` Google Cloud Storageサービス。

プロバイダーによる特異性
------------------------

Google Cloud Storage
^^^^^^^^^^^^^^^^^^^^

セットアップ
^^^^^^^^^^^^

google_storage_client依存関係が必要です。

.. code:: bash

   pip3 install google-cloud-storage 

資格情報を設定するには

-  `Create a service account <https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable>`_ 

そして、サービスアカウントキーを作成します。

-  バケットのアクセス権限を設定します。

バケットのサービスアカウントに `Storage Admin Role <https://cloud.google.com/storage/docs/access-control/iam-roles>`_ を付与することをお勧めします。

-  barman_cloudを使用する場合
   バケットが存在しない場合、作成されます。デフォルトオプションはバケットの作成に使用されます。バケットに特定のオプションリージョン、ストレージクラス、ラベルを含める必要がある場合は、ニーズをすべて満たすようにバケットを作成および設定することをお勧めします。

-  `env variable <https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable>`_  ``GOOGLE_APPLICATION_CREDENTIALS``
   をサービスアカウントキーファイルパスに設定します。

postgresarchive_commandまたはrestore_commandからbarmanクラウドを実行している場合、
postgres環境ファイルで\ ``GOOGLE_APPLICATION_CREDENTIALS``
を設定することを忘れないでください。

使用法
^^^^^^

一部の詳細は、すべてのバーマンクラウドコマンドに固有です。

-  Google Cloud Storage\ ``--cloud-provider=google-cloud-storage``
   を選択します

-  ``SOURCE_URL`` は、gsとhttps形式の両方をサポートしています。例

::

     gs://BUCKET_NAME/path
     or
     https://console.cloud.google.com/storage/browser/BUCKET_NAME/path

一部の詳細は、すべてのバーマンクラウドコマンドに固有です。

-  Google Cloud Storage\ ``--cloud-provider=google-cloud-storage``
   を選択します

-  ``SOURCE_URL`` は、gsとhttps形式の両方をサポートしています。例

::

     gs://BUCKET_NAME/path
     or
     https://console.cloud.google.com/storage/browser/BUCKET_NAME/path

barman-cloudとスナップショットのバックアップ
--------------------------------------------

barman-cloudクライアントユーティリティは、クラウドオブジェクトストアにアップロードする代わりに、クラウドスナップショットを使用してバックアップを作成および管理することもできます。

この方法でbarman-cloudを使用する場合、バックアップデータはボリュームスナップショットとしてクラウドプロバイダーによって保存され、WALとbackup_labelを含むバックアップメタデータはクラウドオブジェクトストレージに保存されます。

前提条件は :ref:`same as for snapshot backups using Barman <#prerequisites-for-cloud-snapshots>` で、barman-cloudによって使用される資格情報がオブジェクトストアに対して読み取り/書き込み/更新操作を実行できる必要があるという要件が追加されています。

スナップショットの### barman-cloud-backup

barman-cloudでスナップショットバックアップを取得するには、次の追加引数とともに\ ``barman-cloud-backup``
を使用します。

-  ``--snapshot-disk`` 複数のディスクに複数回使用できます

-  ``--snapshot-instance``

``--cloud-provider`` が\ ``google-cloud-storage``
の場合、次の引数も必要です。

-  ``--gcp-project``

-  ``--gcp-zone``

``--cloud-provider`` が\ ``azure-blob-storage``
の場合、次の引数も必要です。

-  ``--azure-subscription-id``

-  ``--azure-resource-group``

``--cloud-provider`` が\ ``aws-s3``
の場合、次のオプションの引数を使用できます。

-  ``--aws-profile``

-  ``--aws-region``

クラウドスナップショットが要求される場合、次のオプションは\ ``barman-cloud-backup``
では使用できません。

-  ``--bzip2`` 、\ ``--gzip`` または\ ``--snappy``

-  ``--jobs``

バックアップが作成されると、 ``barman-cloud-backup-delete``
や\ ``barman-cloud-backup-keep``
などの標準のbarman-cloudコマンドを使用して管理できます。

barman-cloud-restore for スナップショット
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

barman-cloudを使用してスナップショットバックアップからリカバリーするプロセスは、
 :ref:`barman backups <#recovering-from-a-snapshot-backup>` のプロセスと非常に似ていますが、リカバリインスタンスがプロビジョニングされたら、\ ``barman recover``
の代わりに\ ``barman-cloud-restore`` を実行する必要があります。これは、
``barman recover``
と同じリカバリー前チェックを実行し、バックアップラベルをリカバリインスタンスの所定の場所にコピーします。

リカバリインスタンスのプロビジョニングに必要なスナップショットメタデータは、
``barman-cloud-backup-show`` を使用して照会できます。

オブジェクトストア型バックアップで\ ``barman-cloud-restore``
を使用する場合と同様に、コマンドはリカバリのためにPostgreSQLを準備しないことに注意してください。
PostgreSQLが起動する前に必要なPITRオプション、カスタム\ ``restore_command``
値、またはWALファイルは、手動または外部ツールで処理する必要があります。

クラウドスナップショットで作成されたバックアップを復元するときは、
``barman-cloud-restore`` とともに次の追加引数を使用する必要があります。

-  ``--snapshot-recovery-instance``

``gcp`` プロバイダーには、次の追加引数が必要です。

-  ``--gcp-zone``

``azure`` プロバイダーには、次の追加引数が必要です。

-  ``--azure-resource-group``

``aws-s3`` プロバイダーでは、次の追加引数を使用できます。

-  ``--aws-region``

クラウドスナップショットバックアップを復元する場合、 ``--tablespace``
オプションは\ ``barman-cloud-restore`` とともに使用できません。
