Step 8 - Using PGD CLI
======================

PGD CLIを使用する
-----------------

PGD CLIコマンドは、構成ファイルを使用して、接続するホストを判断します。
これをオーバーライドして代替構成ファイルを使用したり、サーバーを明示的にポイントしたりできる :ref:`PGD CLIを使用する <PGD CLIを使用する>` があります。ただし、デフォルトでは、
PGD CLIはプリセットの場所で構成ファイルを検索します。

データベースへの接続は、
psqlコマンドのような他のコマンドラインユーティリティが認証されるのと同じ方法で認証されます。

他のコマンドとは異なり、 PGD
CLIは対話型でパスワードの入力を求めません。したがって、次のいずれかの方法を使用してパスワードを渡す必要があります。

-  ホスト、ポート、データベース名、ユーザー名、パスワードを含むエントリを `.pgpass <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_ に追加する
   - ``PGPASSWORD`` 環境変数にパスワードを設定する -
   接続文字列にパスワードを含める

他のオプションはマルチプルのデータベースクラスターでうまく拡張できないか、パスワードの機密性が危険にさらされるため、最初のオプションをお勧めします。

PGD CLIの構成と接続
^^^^^^^^^^^^^^^^^^^

-  PGD CLIがインストールされていることを確認します。

-  PGD CLIが既にインストールされている場合は、次のステップに移動します。

-  システムの場合、そのシステムで :ref:`Step 3 - Configuring PGD repositories <Step 3 - Configuring PGD repositories>` ステップを繰り返します。

-  次に、そのプラットフォームに適切なパッケージインストールコマンドを実行します。

-  RHELおよび派生製品\ ``sudo dnf install edb-pgd5-cli``

-  Debian、Ubuntu、およびデリバティブ
   ``sudo apt-get install edb-pgd5-cli``

-  構成ファイルを作成します。 - これは、使用するPGD
   CLIのクラスターとエンドポイントを指定するYAMLファイルです。

-  構成ファイルのインストール.

-  YAML構成ファイルをデフォルトの構成ディレクトリ\ ``/etc/edb/pgd-cli/``
   に\ ``pgd-cli-config.yml`` .

-  としてコピーします PGD
   CLIを実行するシステムでこのプロセスを繰り返します。

-  pgd-cliを実行します。

PGD CLIを使用してクラスターを探索する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-  ``check-health`` コマンドでクラスターの状態を確認します。

-  ``show-nodes`` コマンドを使用して、クラスター内のノードを表示します。

-  ``show-proxies``
   コマンドを使用して、クラスター内のプロキシを表示します。

-  ``show-groups`` コマンドでクラスター内のグループを表示する

-  ``set-group-options`` コマンドでグループオプションを設定します。

-  ``switchover`` コマンドで書き込みリーダーを切り替えます。

これらのコマンドの詳細については、次の実際の例を参照してください。

また、他の構成オプションの詳細と完全なコマンドリファレンスについては、
:ref:`PGD CLI documentation <../../../cli/>` を参照してください。

実際の例
--------

PGD CLIがインストールされていることを確認します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

この実際の例では、PostgresとPGDが既にインストールされているhost-1でPGD
CLIを構成して使用します。 PGD
CLIを再度インストールする必要はありません。

構成ファイルを作成する
^^^^^^^^^^^^^^^^^^^^^^

PGD
CLI構成ファイルは、PGDプロキシ構成ファイルに似ています。これは、クラスターオブジェクトを含むYAMLファイルです。これには2つのプロパティがあります。

-  PGDクラスターのトップレベルグループの名前\ ``name`` として

-  データベースのエンドポイントの配列\ ``endpoints`` として

::

   cluster:
     name: pgd
     endpoints:
       - host=host-one dbname=bdrdb port=5444
       - host=host-two dbname=bdrdb port=5444
       - host=host-three dbname=bdrdb port=5444

この例のエンドポイントは\ ``port=5444``
を指定していることに注意してください。これはEDB Postgres Advanced
Serverインスタンスに必要です。 EDB Postgres
ExtendedおよびコミュニティPostgreSQLの場合、これを省略できます。

構成ファイルのインストール
^^^^^^^^^^^^^^^^^^^^^^^^^^

PGD CLI構成ディレクトリを作成します。

::

   sudo mkdir -p /etc/edb/pgd-cli

次に、構成を\ ``/etc/edb/pgd-cli``
ディレクトリの\ ``pgd-cli-config.yml`` ファイルに書き込みます。

この例では、host-oneでこれを実行してファイルを作成できます。

::

   cat <<EOF | sudo tee /etc/edb/pgd-cli/pgd-cli-config.yml
   cluster:
     name: pgd
     endpoints:
       - host=host-one dbname=bdrdb port=5444
       - host=host-two dbname=bdrdb port=5444
       - host=host-three dbname=bdrdb port=5444
   EOF

PGD
CLIを使用する必要があるシステムでこのプロセスを繰り返すことができます。

PGD CLIを実行する
^^^^^^^^^^^^^^^^^

構成ファイルを配置し、enterprisedb
systemユーザーとしてログインすると、pgd-cliを実行できます。 たとえば、
``show-nodes``
コマンドを使用して、クラスター内のノードとそのステータスをリストできます。

::

   pgd show-nodes
   __OUTPUT__
   Node       Node ID    Group Type Current State Target State Status Seq ID
   - ---       -------    ----- ---- ------------- ------------ ------ ------
   node-one   2824718320 dc1   data ACTIVE        ACTIVE       Up     1
   node-three 1954860017 dc1   data ACTIVE        ACTIVE       Up     3
   node-two   2299992455 dc1   data ACTIVE        ACTIVE       Up     2

.. _pgd-cliを使用してクラスターを探索する-1:

PGD CLIを使用してクラスターを探索する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PGD
CLIが構成されたら、それを使用して、クラスターのPGDレベルのビューを取得できます。

クラスターの状態を確認する
^^^^^^^^^^^^^^^^^^^^^^^^^^

:ref:`check-health <check-health>` コマンドは、クラスターの状態を表示する簡単な方法を提供します。

::

   pgd check-health
   __OUTPUT__
   Check      Status Message
   - ----      ------ -------
   ClockSkew  Ok     All BDR node pairs have clockskew within permissible limit
   Connection Ok     All BDR nodes are accessible
   Raft       Ok     Raft Consensus is working correctly
   Replslots  Ok     All BDR replication slots are working correctly
   Version    Ok     All nodes are running same BDR versions

クラスター内のノードを表示する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

前述のように、
:ref:`show-nodes <show-nodes>` コマンドはクラスター内のノードをリストします。

::

   pgd show-nodes
   __OUTPUT__
   Node       Node ID    Group Type Current State Target State Status Seq ID
   - ---       -------    ----- ---- ------------- ------------ ------ ------
   node-one   2824718320 dc1   data ACTIVE        ACTIVE       Up     1
   node-three 1954860017 dc1   data ACTIVE        ACTIVE       Up     3
   node-two   2299992455 dc1   data ACTIVE        ACTIVE       Up     2

このビューには、ノードがメンバーであるグループとその現在のステータスが表示されます。ノードで実行されているPGDおよびPostgresのバージョンを確認するには、
``show-version`` を使用します。

::

   pgd show-version
   __OUTPUT__
   Node       BDR Version Postgres Version
   - ---       ----------- ----------------
   node-one   5.3.0       16.1.0
   node-three 5.3.0       16.1.0
   node-two   5.3.0       16.1.0

クラスター内のプロキシを表示する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

:ref:`show-proxies <show-proxies>` を使用して、構成済みのプロキシとそのグループとポートを表示できます。

::

   pgd show-proxies
   __OUTPUT__
   Proxy           Group Listen Addresses Listen Port
   - ----           ----- ---------------- -----------
   pgd-proxy-one   dc1   [0.0.0.0]        6432
   pgd-proxy-three dc1   [0.0.0.0]        6432
   pgd-proxy-two   dc1   [0.0.0.0]        6432

クラスター内のグループを表示する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

最後に、 PGD
CLIの :ref:`show-groups <show-groups>` コマンドは、構成されているグループなどを表示します。

::

   pgd show-node_groups
   __OUTPUT__
   Group Group ID   Type   Parent Group Location Raft Routing Write Leader
   - ---- --------   ----   ------------ -------- ---- ------- ------------
   pgd   1850374637 global                       true false
   dc1   4269540889 data   pgd                   true true    node-one

このコマンドは次を示します。

-  グループ

-  そのタイプ

-  その親グループ

-  グループの場所

-  Raftコンセンサスが有効かどうか

-  グループが接続をルーティングしているかどうか、およびそうである場合、その書き込みリーダーであるノード

場所は説明的なメタデータであり、これまでのところ設定していません。 PGD
CLIを使用してこれを行うことができます。

グループオプションを設定する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

:ref:`set-group-options <set-group-options>` コマンドを使用して、PGD
CLIを使用してグループオプションを設定することもできます。
これには、この変更のグループを設定する\ ``--group-name``
フラグと、変更する設定を含む\ ``--option`` フラグが必要です。 ``dc1``
グループの場所を\ ``London`` に設定する場合は、次を実行します。

::

   pgd set-group-options --group-name dc1 --option "location=London"
   __OUTPUT__
   group options updated successfully

``show-groups`` で確認できます。

::

   pgd show-node_groups
   __OUTPUT__
   Group Group ID   Type   Parent Group Location Raft Routing Write Leader
   - ---- --------   ----   ------------ -------- ---- ------- ------------
   pgd   1850374637 global                       true false
   dc1   4269540889 data   pgd          London   true true    node-one

書き込みリーダーの切り替え
^^^^^^^^^^^^^^^^^^^^^^^^^^

グループ内の書き込みリーダーを変更して、ホストでのメンテナンスを有効にする必要がある場合、
PGD
CLIは :ref:`計画的なスイッチオーバーを実行する <計画的なスイッチオーバーを実行する>` コマンドを提供します。これは、ノードが存在するグループを含む\ ``--group-name``
フラグと、切り替えるノードの名前を含む\ ``--node-name``
フラグを受け取ります。次に、次を実行できます。

::

   pgd switchover --group-name dc1 --node-name node-two
   __OUTPUT__
   switchover is complete

``show-groups`` でそれを確認できます。

::

   pgd show-groups
   __OUTPUT__
   Group Group ID   Type   Parent Group Location Raft Routing Write Leader
   - ---- --------   ----   ------------ -------- ---- ------- ------------
   pgd   1850374637 global                       true false
   dc1   4269540889 data   pgd          London   true true    node-two

PGD CLIで使用可能なコマンドの詳細については、
:ref:`PGD CLI command reference <../../../cli/command_ref/>` を参照してください。
