クラスタ内のプライマリ ノードに障害が発生して、スタンバイ ノードを新しいプライマリに昇格してから、プライマリ ノードがオンラインに戻った場合は、repmgr データが不正確になります。不正な設定は、repmgr cluster show コマンドで検出できます。

以前のプライマリ ノードで repmgr cluster show を実行する

次の例では、オンラインに復帰した以前のプライマリ ノードで repmgr cluster show コマンドを実行すると、次のようなシステム出力が生成されます。

 
     ID |  Name     | Role    | Status            | Upstream  | Location | Connection string
--------+-----------+---------+-------------------+-----------+----------+------------------------
 Node 1 | Node1 name| standby |!running as primary|Node 3 name| default  | host=host IP address user=repmgr dbname=repmgr
 Node 2 | Node2 name| standby |     running       |Node 3 name| default  | host=host IP address user=repmgr dbname=repmgr
 Node 3 | Node3 name| primary |   * running       |           | default  | host=host IP address user=repmgr dbname=repmgr
   WARNING: following issues were detected
  - node 1(ID: Node 1) is registered as standby but running as primary

この例では、ノード 1 がクラスタ内の現在のプライマリ ノードです。

repmgr cluster show コマンドを実行するときに、スタンバイ ノードの !running as primary ステータスが取得された場合は、以前のプライマリ ノードがクラスタ内で実行されていることを意味します。この場合は、以前のプライマリ ノードをシャットダウンして登録解除する必要があります。

新しいプライマリで repmgr cluster show を実行する

次の例では、新しいプライマリ ノードで repmgr cluster show コマンドを実行すると、次のようなシステム出力が生成されます。

     ID |  Name    | Role    | Status     | Upstream   | Location | Connection string
--------+----------+---------+------------+------------+----------+------------------------
 Node 1 |Node1 name| primary |  * running |            | default  | host=host IP address user=repmgr dbname=repmgr
 Node 2 |Node2 name| standby |    running | Node1 name | default  | host=host IP address user=repmgr dbname=repmgr
 Node 3 |Node3 name| primary |  ! running |            | default  | host=host IP address user=repmgr dbname=repmgr
   WARNING: following issues were detected
  - node 3(ID: Node 3) is running but the repmgr node record is inactive

この場合、repmgr データは正確です。ノード 1 が実行されていて、現在のプライマリ ノードであることを正確に示しています。ノード 3(以前のプライマリ)に関する警告メッセージは、このノードの repmgr データが正確でないことを示します。

スタンバイ ノードの昇格後、残りのスタンバイ ノードで standby follow を実行せずに repmgr cluster show を実行する

次の例では、プライマリ ノードに障害が発生したクラスタ内のノードごとに、repmgr データを表示できます。repmgr standby promote コマンドを使用してスタンバイを手動で昇格しましたが、残りのスタンバイ ノードで repmgr standby follow を実行していません。

新しいプライマリで repmgr cluster show を実行すると、システム出力は正しい repmgr データを表しますが、新しいプライマリ ノード(ノード 2)の後ろにはスタンバイ ノードがありません。

     ID |  Name    | Role    | Status    | Upstream   |Location | Connection string
--------+----------+---------+-----------+------------+---------+------------------------
 Node 1 |Node1 name| primary | * running |            | default | host=host IP address user=repmgr dbname=repmgr
 Node 2 |Node2 name| primary | ! running |            | default | host=host IP address user=repmgr dbname=repmgr
 Node 3 |Node3 name| standby |   running |Node 1 name | default | host=host IP address user=repmgr dbname=repmgr
   WARNING: following issues were detected
  - node 1(ID: Node 1) is running but the repmgr node record is inactive

以前のプライマリであるノード 1 と、以前のプライマリの後ろにありスタンバイであるノード 3 の両方が、不正確な repmgr データを提供します。

     ID |  Name    | Role    | Status              | Upstream |Location | Connection string
--------+----------+---------+---------------------+----------+---------+------------------------
 Node 1 |Node1 name| primary |   * running         |          | default | host=host IP address user=repmgr dbname=repmgr
 Node 2 |Node2 name| standby |! running as primary |Node1 name| default | host=host IP address user=repmgr dbname=repmgr
 Node 3 |Node3 name| standby |     running         |Node1 name| default | host=host IP address user=repmgr dbname=repmgr
   WARNING: following issues were detected
  - node 2(ID: Node 2) is registered as standby but running as primary

スタンバイ ノードで repmgr cluster show を実行する

現在のプライマリの後ろにあるスタンバイ ノードでコマンドを実行すると、現在のプライマリのデータと同一の正確な repmgr データを含むシステム出力が生成されます。

以前のプライマリの後ろにあるスタンバイ ノードでコマンドを実行すると、以前のプライマリのデータと同一の不正確な repmgr データを含むシステム出力が生成されます。

ログ エントリ

スタンバイ ノードを新しいプライマリに昇格した後に、障害が発生した以前のプライマリがオンラインに戻った場合は、すべてのノード上の update-repmgr-data.log ファイルに、不正確な repmgr データを含む次のエントリが表示されます。

ERROR: An old primary is running in the repmgr cluster.
ERROR: Manual intervention is required to repair the repmgr cluster.
ERROR: The first step should be to shutdown and unregister the old primary.