Step 5 - Checking the cluster#
クラスターの確認#
クラスターが起動して実行されたら、いくつかの基本的なチェックを実行して、どの程度効率的に複製されているかを確認することは価値があります。
次の例は、これを行うための1つの簡単な方法を示していますが、実行するテストがユースケースに適切であることを確認する必要があります。
インストールおよび構成済みのノードで、ログインしてpsql
を実行してデータベースに接続します。 EDB Postgres Advanced
Serverを使用している場合は、 enterprisedb
ユーザーを使用します。それ以外の場合は、 postgres を使用します。
sudo -iu postgres psql "host=host-1 port=5432 username=postgres dbname=pgddb"
準備 クラスターの準備ができていることを確認します。 host-1/node-1のデータベースにログインします。 ``select bdr.wait_slot_confirm_lsn(NULL, NULL);`` を実行します。 クエリーが返されると、クラスターの準備が整います。
データを作成する クラスターがレプリケートしていることをテストする最も簡単な方法は、1つのノードにログインし、テーブルを作成し、それに値を設定することです。 *ノード1で、テーブルを作成します。
CREATE TABLE quicktest ( id SERIAL PRIMARY KEY, value INT );
*ノード1で、テーブルにデータを入力します。
INSERT INTO quicktest (value) SELECT random()*10000 FROM generate_series(1,10000);
*ノード1で、パフォーマンスをモニタします。
select * from bdr.node_replication_rates;
*ノード1で、値列の合計を取得しますチェック用。
select COUNT(*),SUM(value) from quicktest;
データの確認 ノード2にログインします。 host-2/node-2のデータベースにログインします。 ノード2で、値列の合計を取得しますチェック用。
select COUNT(*),SUM(value) from quicktest;
ノード1の結果と比較します。 ノード3にログインします。 host-3/node-3のデータベースにログインします。 *ノード3で、値列の合計を取得しますチェック用。
select COUNT(*),SUM(value) from quicktest;
*ノード1およびノード2の結果と比較します。
実際の例#
準備#
host-1のPostgresサーバーにログインします。
ssh admin@host-1
sudo -iu postgres psql "host=host-1 port=5432 username=postgres dbname=pgddb"
これは、PGDのノード1への接続です。
クラスターの準備ができていることを確認します#
クラスターの準備ができていることを確認するには、次のコマンドを実行します。
select bdr.wait_slot_confirm_lsn(NULL, NULL)
このクエリは、クラスターが初期化でビジーな間はブロックし、クラスターの準備が整うと結果を返します。
別のウィンドウで、host-2のPostgresサーバーにログインします。
ssh admin@host-2
sudo -iu postgres psql "host=host-2 port=5432 username=postgres dbname=pgddb"
データを作成する#
ノード1で、テーブルを作成します#
実行します
CREATE TABLE quicktest ( id SERIAL PRIMARY KEY, value INT );
ノード1で、テーブルにデータを設定します#
INSERT INTO quicktest (value) SELECT random()*10000 FROM generate_series(1,10000);
このコマンドは、10000行のランダム値のテーブルを生成します。
ノード1で、パフォーマンスを監視します#
できるだけ早く実行します。
select * from bdr.node_replication_rates;
このコマンドは、そのデータが他の2つのノードに複製された速度に関する統計を表示します。
pgddb=# select * from bdr.node_replication_rates;
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でチェックサムを取得します#
実行します
select COUNT(*),SUM(value) from quicktest;
このコマンドは、生成されたデータからいくつかの値を取得します。
pgddb=# select COUNT(*),SUM(value) from quicktest;
__OUTPUT__
count | sum
- -------+-----------
100000 | 498884606
(1 row)
データを確認する#
host-2のPostgresサーバーにログインします#
ssh admin@host-2
sudo -iu postgres psql "host=host-2 port=5432 username=postgres dbname=pgddb"
これは、PGDのノード2への接続です。
ノード2で、チェックサムを取得します#
実行します
select COUNT(*),SUM(value) from quicktest;
このコマンドは、生成されたデータのノード2の値を取得します。
pgddb=# select COUNT(*),SUM(value) from quicktest;
__OUTPUT__
count | sum
- -------+-----------
100000 | 498884606
(1 row)
ノード1の結果と比較します#
値は同じです。
ノード3でプロセスを繰り返すか、任意のノードで新しいデータを生成し、他のノードにレプリケートされるのを確認できます。
host-3のPostgresサーバーにログインします#
ssh admin@host-3
sudo -iu enterprisedb psql pgddb
これは、PGDのノード3への接続です。
ノード3で、チェックサムを取得します#
実行します
select COUNT(*),SUM(value) from quicktest;
このコマンドは、生成されたデータのノード3の値を取得します。
pgddb=# select COUNT(*),SUM(value) from quicktest;
__OUTPUT__
count | sum
- -------+-----------
100000 | 498884606
(1 row)
ノード1およびノード2の結果と比較します#
値は同じです。