Serverコマンド
==============

前のセクションで述べたように、サーバーコマンドはPostgreSQLサーバーまたはBarmanのその領域で直接動作し、そのステータスの確認、メンテナンス操作の実行、バックアップの作成、およびWALアーカイブの管理に役立ちます。

archive-wal
-----------

``archive-wal``
コマンドは、特定のサーバーのWALファイルに対してメンテナンス操作を実行します。この操作には、ストリーミング接続または\ ``archive_command``
またはその両方から受信したWALファイルの処理が含まれます。

..  IMPORTANT::
   `archive-wal` コマンドは、直接呼び出すことができますが、 `cron` 汎用コマンドから開始されるように設計されています。

バックアップ
------------

``backup``
コマンドは、指定されたサーバーの完全なバックアップ_basebackup_を取得します。新しいバックアップに対応する構成パラメーターをオーバーライドできる複数のオプションがあります。詳細については、マニュアルページを参照してください。

次の使用で、特定のサーバーの完全なバックアップを実行できます。

.. code:: bash

   barman backup <server_name>

..  TIP::
   `barman backup all` を使用して、構成済みのすべてのサーバーを順次バックアップできます。

..  TIP::
   `barman backup <server_1_name> <server_2_name>` を使用して、`<server_1_name>` および`<server_2_name>` サーバーの両方をシークエンシャルにバックアップできます。

Barmanでインクリメンタルバックアップを取る方法については、incrementalbackupsectionを確認してください。

Barman 2.10では、 ``backup`` コマンドの\ ``-w`` /``--wait``
オプションを導入しました。設定されると、
Barmanはバックアップの状態を一時的に\ ``WAITING_FOR_WALS``
に保存し、必要なすべてのWALファイルがアーカイブされるのを待ってから、状態を\ ``DONE``
に設定し、バックアップ後フックスクリプトを続行します。
``--wait-timeout`` オプションが提供される場合、
Barmanは指定された秒数の後にWALファイルの待機を停止し、状態は\ ``WAITING_FOR_WALS``
のままになります。 ``cron``
コマンドは、不足しているWALファイルがアーカイブされていることを確認し続け、バックアップに\ ``DONE``
としてラベル付けします。

check
-----

``check``
コマンドを使用して、特定のサーバーへの接続と構成の一貫性を確認できます。

.. code:: bash

   barman check <server_name>

..  TIP::
   `barman check all` を使用して、構成されているすべてのサーバーを確認できます。

..  IMPORTANT::
   `check` コマンドは、おそらくBarmanが実装する最も重要な機能です。アラートおよび監視インフラストラクチャと統合することをお勧めします。 `--nagios` オプションを使用すると、Nagios / Icingaのプラグインを簡単に作成できます。

config-update
-------------

``config-update`` コマンドは、
Barmanでサーバーとモデルの構成を作成または更新するために使用されます

``config-update`` コマンドを実行する構文は次のとおりです。

.. code:: bash

   barman config-update <json_changes>

``json_changes``
は、ドキュメントの配列を含むJSON文字列である必要があります。各ドキュメントには、次のキーが含まれている必要があります。

-  ``scope``
   BarmanサーバーまたはBarmanモデルを作成または更新するかに応じて、
   ``server`` または\ ``model`` のいずれか。

また、 \`\ ``scope``
\`の値に応じて、次のキーのいずれかが含まれる必要があります。

-  ``server_name`` ``scope`` が\ ``server``
   の場合、このキーにBarmanサーバー名を入力する必要があります。

-  ``model_name`` ``scope`` が\ ``model``
   の場合、このキーにBarmanモデル名を入力する必要があります。

これらに加えて、各ドキュメントに1つ以上のBarman構成オプションとそれらの目的の値を入力する必要があります。

これは、 Barmanサーバー ``my_server`` を\ ``archiver=on``
および\ ``streaming_archiver=off`` で更新する例です。

.. code:: bash

   barman config-update \
     ‘[{“scope”: “server”, “server_name”: “my_server”, “archiver”: “on”, “streaming_archiver”: “off”}]’

..

   *注意* ``barman config-update`` コマンドは、\ ``barman_home``
   の下に作成される\ ``.barman.auto.conf``
   という名前のファイルに構成オプションを書き込みます。その構成ファイルはより優先され、
   Barmanグローバル構成ファイル通常は\ ``/etc/barman.conf``
   からの値と、\ ``configuration_files_directory``
   ごとにインクルードファイル通常は\ ``/etc/barman.d``
   のファイルからの値をオーバーライドします。後で、何らかの理由で、これらのファイルの構成オプションを手動で変更することにした場合は、そのことに注意してください。

config-switch
-------------

``config-switch``
コマンドは、モデルを介して定義された構成オーバーライドのセットをBarmanサーバーに適用するために使用されます。
Barmanサーバーの最終構成は、サーバーの構成と選択したモデルによって適用されたオーバーライドで構成されます。モデルはクラスター環境で特に役立つため、たとえば、フェールオーバーイベントに応答して使用できるさまざまな構成モデルを作成できます。

``config-switch`` コマンドを介してモデルを適用する構文は次のとおりです。

.. code:: bash

   barman config-switch <server_name> <model_name>

..

   *注意* コマンドは\ ``<model_name>`` が存在し、\ ``<server_name>``
   と同じ\ ``cluster`` に属している場合にのみ成功します。

   *注*
   一度にアクティブにできるモデルは1つだけです。異なるモデルでコマンドを2回実行した場合、最後に定義されたオーバーライドのみが適用されます。

サーバーの既存のアクティブモデルを適用解除するための構文は次のとおりです。

.. code:: bash

   barman config-switch <server_name> --reset

これは、アクティブなモデルによって以前に設定されていたオーバーライドの適用解除を処理します。

   *注*
   このコマンドは、特定の状況からの復旧にも役立ちます。以前に構成されたが、構成に存在しないアクティブなモデルを使用するサーバーがある場合。

generate-manifest
-----------------

このコマンドは、バックアップがリモートで作成され、
pg_basebackupが関係せず、\ ``backup_manifest``
ファイルがバックアップに存在しない場合に役立ちます。
barmanサーバーのバックアップを使用して、backup_idから\ ``backup_manifest``
ファイルを生成します。ファイルが既に存在する場合、generateコマンドは中止されます。

コマンドの例

.. code:: bash

   barman generate-manifest <server_name> <backup_id>

backup_id backup id stablesのいずれかが使用できます。

このコマンドは、次のようにpost_backupフックスクリプトとして使用することもできます。

.. code:: bash

   post_backup_script=barman generate-manifest ${BARMAN_SERVER} ${BARMAN_BACKUP_ID}

get-wal
-------

Barmanでは、ユーザーが\ ``get-wal``
コマンドを介してWALアーカイブから_xlog_ファイルを要求できます。

.. code:: bash

   barman get-wal [-o OUTPUT_DIRECTORY][-j|-x] <server_name> <wal_id>

要求されたWALファイルがサーバーアーカイブで見つかった場合、特に指定しない限り、非圧縮コンテンツは\ ``STDOUT``
に返されます。

``get-wal`` コマンドでは、次のオプションが使用できます。

-  ``-o``
   を使用すると、ユーザーはBarmanが要求されたWALファイルをデポジットする宛先ディレクトリを指定できます

-  ``-j`` は、 ``bzip2`` アルゴリズムを使用して出力を圧縮します

-  ``-x`` は、 ``gzip`` アルゴリズムを使用して出力を圧縮します

-  ``-p SIZE``
   は、要求されたファイルから開始して、アーカイブからWALファイルまでをピークます

リカバリオペレーション中に\ ``get-wal`` を使用し、
Barmanサーバーをサーバーの_WALハブ_に変換することが可能です。これは、
``get-wal`` 値を\ ``recovery_options``
グローバル/サーバー構成オプションに追加することにより、自動的に達成できます。

.. code:: ini

   recovery_options = get-wal

``recovery_options``
は、コンマ区切り値のリストを受け入れるグローバル/サーバーオプションです。リカバリオペレーション中にキーワード\ ``get-wal``
が存在する場合、 Barmanは\ ``restore_command``
を設定してリカバリ構成を準備し、\ ``barman get-wal``
が必要なWALファイルを取得するために使用されるようにします。同様に、実行時に\ ``recover``
コマンドの\ ``--get-wal`` オプションを使用できます。

``recovery_options`` で\ ``get-wal``
が設定されているが、リカバリオペレーション中に必要ない場合、
``--no-get-wal`` オプションを\ ``recover``
コマンドとともに使用して、\ ``get-wal``
リカバリオプションを無効にできます。

これは、ローカルリカバリの\ ``restore_command`` の例です。

.. code:: ini

   restore_command = sudo -u barman barman get-wal SERVER %f > %p

``get-wal`` コマンドは、常に\ ``barman``
ユーザーとして呼び出す必要があること、およびカタログからWALファイルを読み取るには正しい権限が必要であることに注意してください。これが、この例で\ ``sudo -u barman``
を使用する理由です。

リモートリカバリーに\ ``recovery_options`` から\ ``get-wal``
を設定すると、代わりに\ ``barman-wal-restore``
スクリプトを使用して\ ``restore_command`` が生成されます。
``barman-wal-restore``
は、SSH接続エラーを管理する、より復元力の高いシェルスクリプトです。

このスクリプトには、WALファイルの自動圧縮および解凍や、PostgreSQLがいずれかのWALファイルを適用しているときに次のWALファイルを取得できる_peek_機能など、多くの便利なオプションが含まれています。これは、
PostgreSQLとBarman間の帯域幅の使用を最適化する優れた方法です。

``barman-wal-restore`` は、 ``barman-cli`` パッケージで入手できます。

これは、リモートリカバリの\ ``restore_command`` の例です。

.. code:: ini

   restore_command = barman-wal-restore -U barman backup SERVER %f %p

SSHを使用してBarmanサーバーと通信するため、 ``postgres``
ユーザーがバックアップサーバーに\ ``barman``
としてログインするには、SSHキー認証が必要です。
SSHデフォルトの22以外のポートを使用する必要がある場合は、 ``--port``
オプションを追加して、SSH接続に使用するポートを指定できます。

``barman-wal-restore``
がBarmanサーバーに接続できること、および必要なPostgreSQLサーバーが次のコマンドでWALファイルを送信するようにBarmanで構成されていることを確認できます。

.. code:: bash

   barman-wal-restore --test backup pg DUMMY DUMMY

``backup`` はBarmanがインストールされているホストであり、\ ``pg``
はBarmanで構成されたPostgreSQLサーバーの名前であり、DUMMYはプレースホルダーです。\ ``barman-wal-restore``
には、WALファイル名と宛先ディレクトリの2つの引数が必要ですが、これらは無視されます。

すべてが正しく構成されている場合、次の出力が表示されるはずです。

.. code:: bash

   Ready to retrieve WAL files from the server pg

``barman-wal-restore``
コマンドの詳細については、PostgreSQLサーバーで\ ``man barman-wal-restore``
と入力してください。

list-backups
------------

次の使用で、特定のサーバーで使用可能なバックアップのカタログをリストできます。

.. code:: bash

   barman list-backups <server_name>

..  TIP ::
   サーバー名として`all` を使用して、すべてのサーバーのバックアップの完全なリストを要求できます。

機械読み取り可能な出力を取得するには、 ``--minimal``
オプションを使用できます。JSON形式で出力を取得するには、
``--format=json`` オプションを使用できます。

resume-xlogdb
-------------

``all``
ショートカットを使用して、特定のサーバーまたはすべてのサーバーのWALアーカイブのコンテンツをいつでも再生成できます。
WALアーカイブは\ ``xlog.db`` ファイルに含まれており、
Barmanによって管理されるすべてのサーバーには独自のコピーがあります。

``xlog.db`` ファイルは、 ``rebuild-xlogdb``
コマンドでリビルドできます。これにより、アーカイブされたすべてのWALファイルがスキャンされ、アーカイブのメタデータが再生成されます。

例

.. code:: bash

   barman rebuild-xlogdb <server_name>

resume-wal
----------

このコマンドは、ストリーミングプロトコルを使用してPostgreSQLストリーミング接続からWALファイルを受信する\ ``receive-wal``
プロセスを管理します。

レシーブウォールプロセス管理
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

オプションを指定せずにコマンドを実行すると、\ ``receive-wal``
プロセスが開始されます。このコマンドは、 ``pg_receivewal``
PostgreSQLコマンドに基づいています。

.. code:: bash

   barman receive-wal <server_name>

..  NOTE::
   `receive-wal` コマンドはフォアグラウンドプロセスです。

``--stop``
オプションを使用してコマンドを実行すると、現在実行中の\ ``receive-wal``
プロセスが停止されます。

``receive-wal``
プロセスは、ステータスファイルを使用して、トランザクションログの最後に書き込まれたレコードを追跡します。ステータスファイルをクリーニングする必要がある場合、
``--reset`` オプションを使用できます。

..  IMPORTANT ::
   レプリケーションスロットを使用していない場合は、 `wal_keep_segments` またはPostgreSQLバージョン13.0以降では`wal_keep_size` の値に依存します。データベースのワークロードの高いピークでは、`receive-wal` プロセスが遅延し、非同期になる場合があることに注意してください。予防措置として、 Barmanでは現在、ユーザーが`--reset` オプションを使用してコマンドを手動で実行して、誤った仮定を避けることを必要としています。

レプリケーションスロット管理
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``receive-wal`` プロセスは、
BarmanがWALアーカイブ手順に必要なレプリケーションスロットを作成またはドロップするのにも役立ちます。

``--create-slot`` オプションを使用すると、\ ``slot_name``
構成オプションの後に名前付けられたレプリケーションスロットがPostgreSQLサーバーに作成されます。

``--drop-slot`` では、以前のレプリケーションスロットが削除されます。

レプリケーションステータス
--------------------------

``replication-status`` コマンドは、
Barmanサーバー構成されている場合の\ ``receive-wal``
プロセスを含む、PostgreSQLサーバーに現在接続されているストリーミングクライアントのステータスを報告します。

次のようにコマンドを実行できます。

.. code:: bash

   barman replication-status <server_name>

..  TIP ::
   サーバー名として`all` を使用して、すべてのサーバーのレプリカの完全なステータスレポートを要求できます。

機械可読な出力を得るには、 ``--minimal`` オプションを使用できます。

show-servers
------------

次の使用で、特定のサーバーの構成パラメーターを表示できます。

.. code:: bash

   barman show-servers <server_name>

..  TIP ::
  サーバー名として`all` を使用して、完全な構成レポートを要求できます。

ステータス
----------

``status`` コマンドは、PostgreSQLサーバーまたはサーバー名として\ ``all``
を使用する場合はすべてのサーバーのライブ情報とステータスを表示します。

.. code:: bash

   barman status <server_name>

switch-wal
----------

このコマンドは、
PostgreSQLサーバーを別のトランザクションログファイルWALに切り替え、現在のログファイルを閉じ、受信、アーカイブできるようにします。

.. code:: bash

   barman switch-wal <server_name>

最後のトランザクションログファイルのスイッチ以降、トランザクションアクティビティが存在しない場合、
``--force`` オプションを使用してスイッチを強制する必要があります。

``--archive``
オプションは、xlogスイッチの後にWALアーカイブをトリガーするようにBarmanに要求します。デフォルトでは、30秒のタイムアウトが適用されますこれは\ ``--archive-timeout``
で変更できます。 WALファイルを受信しない場合、エラーが返されます。

..  NOTE ::
   Barman 2.1および2.2では、このコマンドは`switch-xlog` と呼ばれていました。 PostgreSQL 10以降との名前付けの一貫性のために名前が変更されました。

verify-backup
-------------

``verify-backup``
コマンドは、バックアップからbackup_manifestファイルを使用し、それに対して\ ``pg_verifybackup``
を実行します。

.. code:: bash

   barman verify-backup <server_name> <backup_id>

このコマンドは、 ``pg_verifybackup <path_to_backup_manifest> -n``
PG>=13で使用可能 ``pg_verifybackup``
バックアップサーバーにインストールする必要があります。
rsyncバックアップの場合、 ``generate-manifest`` コマンドで使用できます。

backup_id backup id stablesのいずれかが使用できます。
