情報を表示するバックエンドノードのインデックスを指定します。
すべてのバックエンドノードの情報を表示します。
pcp_common_options を参照してください。
ここでは例を示します。
$ pcp_node_info -w -p 11001 -n 1 /tmp 11003 1 0.500000 waiting up standby standby 0 streaming async 2021-02-27 14:51:30
結果は以下の順のとおりです。
1. ノードのホスト名 2. ノードのポート番号 3. ステータス 4. ロードバランスウェイト 5. バックエンドステータス名 6. 実際のバックエンドの状態 (Pgpool-II 4.3以降。PQpingParamsで取得) 7. バックエンドの役割 8. 実際のバックエンドの役割(Pgpool-II 4.3以降。pg_is_in_recoveryで取得) 9. レプリケーションの遅延 10. レプリケーション状態 (Pgpool-II 4.1以降。pg_stat_replicationから取得) 11. 同期レプリケーション状態 (Pgpool-II 4.1以降。pg_stat_replicationから取得) 12. 最終ステータス変更時刻
3(ステータス)は [0..3] までの数字で表わされます。各数字の意味は以下のとおりです。
0 - 初期化時のみに表われる。PCP コマンドで表示されることはない。
1 - ノード稼働中。接続無し
2 - ノード稼働中。接続有り
3 - ノードダウン
4(ロードバランスウェイト)は0から1に正規化されたフォーマットで出力されます。
5(バックエンドステータス名)はPgpool-IIから見たPostgreSQLノードのステータス名を示します。 これは、上記「3(ステータス)」の数値に対応する状態名(文字列)であり、Pgpool-IIが内部的に保持しているノードの状態を、可読性の高い形式で表現したものです。
6(実際のバックエンドの状態)は実際のバックエンドの状態をリアルタイムで取得して表示します。
情報の取得は、このコマンドが実行された時にPQpingParams
を呼び出すことによって行われます。
PQpingParams
はPostgreSQL 9.1以降でのみサポートされています。
Pgpool-IIがPostgreSQL 9.0以前とともに構築されると、この列は"unknown"と表示されます。
また、ヘルスチェックが無効になっている場合も"unknown"と表示されます。
pcp_detach_nodeでバックエンドノードを切り離すと、Pgpool-IIが管理する状態は"down"になりますが、バックエンドの実際の状態は"up"なので、5と6が一致しないことはあり得ます。
逆に、5が"up"なのに、6が"down"というのは起こらないはずです。
7(バックエンドの役割)はPgpool-IIから見たPostgreSQLノードの役割(primaryまたはstandby)を示します。Pgpool-IIが内部的に保持している情報に基づいて表示されます。
8(実際のバックエンドの役割)は実際のバックエンドの役割(primaryまたはstandby)をリアルタイムで取得して表示します。
その結果はストリーミングレプリケーションモードでは、"primary"か"standby"ですが、情報が取得できなければ"unknown"と表示します。
Pgpool-IIはノードID順にバックエンドノードを調べ、最後に見つけたスタンバイ以外のノードをプライマリとするので、誤ってスタンバイ以外のノードが複数できたときなどには、7と8が一致しないことはありえます。
(このコマンドはそのような状態を見つけるのに役立ちます。)
それ以外のモードでは、"main"あるいは"replica"と表示されます。
ストリーミングレプリケーションモードと違って、pg_is_in_recovery
は呼び出されず、7と8が異なる値になることはありません。
9, 10, 11を正しく表示させるに、sr_check_periodが0以外に設定されている必要があります。 さらに10, 11を正しく表示させるには、以下の追加設定が必要です。
backend_application_nameパラメータを設定する必要があります。
各backend_application_nameXに設定された値が、該当ノードのprimary_conninfoのapplication_nameに指定された値と一致している必要があります。
特に、Pgpool-IIのpcp_recovery_nodeコマンドを用いてスタンバイノードを構築し、コミュニティ提供のサンプルスクリプトを使用している場合は、backend_application_nameXの値をbackend_hostnameXと一致させてください。 具体的な設定例については項8.2.6.6をご参照ください。
sr_check_userがPostgreSQLのスーパーユーザーであるか、もしくはpg_monitorロールの権限が付与されている必要があります。
注意: sr_check_userにpg_monitorロールの権限を付与するには、以下のSQLコマンドをPostgreSQLスーパーユーザーで実行してください("sr_check_user"をsr_check_userの設定値で置き換えてください)
GRANT pg_monitor TO sr_check_user;PostgreSQL 9.6にはpg_monitorグループがないので、sr_check_userはPostgreSQLのスーパーユーザーでなければなりません。
Pgpool-II 4.4から、9 (レプリケーション遅延)はバイトもしくは秒単位で表示されます。 詳細はdelay_threshold_by_timeを参照ください。
-aまたは --allオプションはすべてのバックエンドノードの情報を表示します。
$ pcp_node_info -w -p 11001 -a /tmp 11002 1 0.500000 waiting up primary primary 0 none none 2021-02-27 14:51:30 /tmp 11003 1 0.500000 waiting up standby standby 0 streaming async 2021-02-27 14:51:30
--verbose オプションは出力内容を理解するのに役に立ちます。例を示します:
$ pcp_node_info -w -p 11001 --verbose 1 Hostname : /tmp Port : 11003 Status : 1 Weight : 0.500000 Status Name : waiting Backend Status Name : up Role : standby Backend Role : standby Replication Delay : 0 Replication State : streaming Replication Sync State : async Last Status Change : 2021-02-27 14:51:30