Checking the cluster
====================

クラスターの確認
----------------

クラスターが起動して実行されたら、いくつかの基本的なチェックを実行して、どの程度効率的に複製されているかを確認することは価値があります。

次の例は、これを行うための1つの簡単な方法を示していますが、実行するテストがユースケースに適切であることを確認する必要があります。

インストールおよび構成済みのノードで、ログインして\ ``psql``
を実行してデータベースに接続します。 EDB Postgres Advanced
Serverを使用している場合は、 ``enterprisedb``
ユーザーを使用します。それ以外の場合は、 ``postgres`` を使用します。

.. code:: bash

   sudo -iu postgres psql pgddb

このコマンドは、host-1/node-1上のデータベースに_直接_接続します。

クイックテスト
^^^^^^^^^^^^^^

- **準備**

- クラスターの準備ができていることを確認します。

- host-1/node-1のデータベースにログインします。

- ``select bdr.wait_slot_confirm_lsn(NULL, NULL);`` を実行します。

- クエリーが返されると、クラスターの準備が整います。

- **データを作成する**
  クラスターがレプリケートしていることをテストする最も簡単な方法は、1つのノードにログインし、テーブルを作成し、それに値を設定することです。

- ノード1で、テーブルを作成します。

.. code:: sql

   CREATE TABLE quicktest ( id SERIAL PRIMARY KEY, value INT );

- ノード1で、テーブルにデータを入力します。

.. code:: sql

   INSERT INTO quicktest (value) SELECT random()*10000 FROM generate_series(1,10000);

- ノード1で、パフォーマンスを監視します。

.. code:: sql

   select * from bdr.node_replication_rates;

- ノード1で、値列の合計を取得しますチェック用。

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

- **データの確認**

- ノード2にログインします。
  host-2/node-2のデータベースにログインします。

- ノード2で、値列の合計を取得しますチェック用。

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

- ノード1の結果と比較します。

- ノード3にログインします。
  host-3/node-3のデータベースにログインします。

- ノード3で、値列の合計を取得しますチェック用。

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

- ノード1およびノード2の結果と比較します。

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

準備
^^^^

host-1のPostgresサーバーにログインします。

.. code:: shell

   ssh admin@host-1
   sudo -iu postgres psql "host=host-1 port=5432 username=postgres dbname=pgddb"

これは、PGDのノード1への接続です。

クラスターの準備ができていることを確認します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

クラスターの準備ができていることを確認するには、次のコマンドを実行します。

.. code:: sql

   select bdr.wait_slot_confirm_lsn(NULL, NULL)

このクエリは、クラスターが初期化でビジーな間はブロックし、クラスターの準備が整うと結果を返します。

別のウィンドウで、host-2のPostgresサーバーにログインします。

.. code:: shell

   ssh admin@host-2
   sudo -iu postgres psql "host=host-2 port=5432 username=postgres dbname=pgddb"

データを作成する
^^^^^^^^^^^^^^^^

ノード1で、テーブルを作成します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

実行します

.. code:: sql

   CREATE TABLE quicktest ( id SERIAL PRIMARY KEY, value INT );

ノード1で、テーブルにデータを設定します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: sql

   INSERT INTO quicktest (value) SELECT random()*10000 FROM generate_series(1,10000);

このコマンドは、10000行のランダム値のテーブルを生成します。

ノード1で、パフォーマンスを監視します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

できるだけ早く実行します。

.. code:: sql

   select * from bdr.node_replication_rates;

このコマンドは、そのデータが他の2つのノードに複製された速度に関する統計を表示します。

.. code:: console

   pgddb=# select * from bdr.node_replication_rates;
   __OUTPUT__
    peer_node_id | target_name | sent_lsn  | replay_lsn | replay_lag | replay_lag_bytes | replay_lag_size | apply_rate | catchup_interv
   al
   - -------------+-------------+-----------+------------+------------+------------------+-----------------+------------+---------------
   - --
      1954860017 | node-3  | 0/DDAA908 | 0/DDAA908  | 00:00:00   |                0 | 0 bytes         |      13682 | 00:00:00
      2299992455 | node-2    | 0/DDAA908 | 0/DDAA908  | 00:00:00   |                0 | 0 bytes         |      13763 | 00:00:00
   (2 rows)

そして、それは既に複製されています。

ノード1でチェックサムを取得します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

実行します

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

このコマンドは、生成されたデータからいくつかの値を取得します。

.. code:: sql

   pgddb=# select COUNT(*),SUM(value) from quicktest;
   __OUTPUT__
    count  |    sum
   - -------+-----------
    100000 | 498884606
   (1 row)

データを確認する
^^^^^^^^^^^^^^^^

host-2のPostgresサーバーにログインします
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: shell

   ssh admin@host-2
   sudo -iu postgres psql "host=host-2 port=5432 username=postgres dbname=pgddb"

これは、PGDのノード2への接続です。

ノード2で、チェックサムを取得します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

実行します

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

このコマンドは、生成されたデータのノード2の値を取得します。

.. code:: sql

   pgddb=# select COUNT(*),SUM(value) from quicktest;
   __OUTPUT__
    count  |    sum
   - -------+-----------
    100000 | 498884606
   (1 row)

ノード1の結果と比較します
^^^^^^^^^^^^^^^^^^^^^^^^^

値は同じです。

ノード3でプロセスを繰り返すか、任意のノードで新しいデータを生成し、他のノードにレプリケートされるのを確認できます。

host-3のPostgresサーバーにログインします
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: shell

   ssh admin@host-3
   sudo -iu enterprisedb psql pgddb

これは、PGDのノード3への接続です。

ノード3で、チェックサムを取得します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

実行します

.. code:: sql

   select COUNT(*),SUM(value) from quicktest;

このコマンドは、生成されたデータのノード3の値を取得します。

.. code:: sql

   pgddb=# select COUNT(*),SUM(value) from quicktest;
   __OUTPUT__
    count  |    sum
   - -------+-----------
    100000 | 498884606
   (1 row)

ノード1およびノード2の結果と比較します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

値は同じです。
