5.12. ストリーミングレプリケーションのチェック

Pgpool-IIPostgreSQL 9.0から利用可能になったPostgreSQL組み込みのストリーミングレプリケーション機能と一緒に動作することができます。 ストリーミングレプリケーション向けにPgpool-IIを設定するには、backend_clustering_mode'streaming_replication'を設定します。

Pgpool-IIではストリーミングレプリケーションとHot Standbyを併用することを前提にしています。 すなわちスタンバイデータベースでは参照クエリのみを扱うことができます。

sr_check_period (integer)

ストリーミングレプリケーションの遅延チェックの間隔を秒単位で指定します。 デフォルト値は10です。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

sr_check_user (string)

ストリーミングレプリケーションのチェックを行うPostgreSQLユーザ名を指定します。 このユーザはLOGIN権限を持ち、すべてのバックエンドに存在しなければなりません。

SSLが有効なら、ストリーミングレプリケーションチェックプロセスはSSL接続を使うかもしれません。

注意: sr_check_usersr_check_passwordは、sr_check_periodが0 (無効)の場合でもプライマリサー バの特定のために使用されます。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

sr_check_password (string)

ストリーミングレプリケーションのチェックを行うsr_check_user PostgreSQLユーザのパスワードを指定します。 ユーザがパスワードが必要としなければ空文字('')を使用します。

sr_check_passwordが空のままの場合、 Pgpool-IIは空のパスワードを使用する前にまずpool_passwdファイルからsr_check_userのパスワードを取得できるか試みます。

sr_check_passwordは以下の書式で指定します。

AES256-CBC暗号化パスワード

パスワードを格納する最もセキュアで推奨できる方法です。 パスワード文字列はAESで始まっていなければなりません。 pg_encユーティリティを使って正しくAESで暗号化された文字列を作ることができます。 Pgpool-IIは暗号化されたパスワードを使うために起動時に有効な復号鍵を要求します。 Pgpool-IIに復号鍵を提供する方法の詳細は項6.4.2を参照してください。

MD5ハッシュパスワード

AESほどはセキュアではありませんが、平文パスワードよりは良いです。 パスワード文字列はMD5で始まっていなければなりません。 バックエンドにはMD5認証を設定しなければならないことに注意してください。 pg_md5ユーティリティを使って正しいMD5ハッシュパワード文字列を作ることができます。

平文パスワード

暗号化されていない平文のパスワードです。 可能ならば使用を避けるべきです。 パスワード文字列はTEXTで始まっていなければなりません。 例えば、パスワードとしてmypassを設定したい場合、パスワードフィールドにTEXTmypassと指定します。 有効な接頭辞がない場合、Pgpool-IIは平文のパスワードとして文字列を見なします。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

sr_check_database (string)

ストリーミングレプリケーションの遅延チェックを行うデータベース名を指定します。 デフォルトは「postgres」です。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

delay_threshold (integer)

プライマリサーバに対するスタンバイサーバのレプリケーション遅延の許容度をWALバイト単位で指定します。 Pgpool-IIは、スタンバイサーバの遅延がこの設定レベルを超えた場合には、 load_balance_modeが有効であっても、プライマリに追いつくまでそのスタンバイノードにはSELECTクエリを送信せず、全てプライマリサーバに送るようにします。 このパラメータが0の場合は、遅延のチェックを行ないません。 この遅延閾値のチェックはsr_check_period毎に行われます。 デフォルト値は0です。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

delay_threshold_by_time (integer)

プライマリサーバに対するスタンバイサーバのレプリケーション遅延の許容時間を指定します。 この値が単位無しで指定された場合は、ミリ秒単位であると見なします。 0よりも大きい値が指定されると、delay_thresholdは無視されます。 Pgpool-IIは、スタンバイサーバの遅延がこの設定レベルを超えた場合には、 load_balance_modeが有効であっても、プライマリに追いつくまでそのスタンバイノードにはSELECTクエリを送信せず、全てプライマリサーバに送るようにします。 このパラメータが0の場合は、遅延のチェックを行ないません。 この遅延閾値のチェックはsr_check_period毎に行われます。 デフォルト値は0です。

レプリケーション遅延はPostgreSQLのシステムビューであるpg_stat_replication.replay_lagから取得します。 このビューはPostgreSQL 10以降でサポートされています。 もしそれ以前のバージョンのPostgreSQLを使用すると、Pgpool-IIは自動的にdelay_thresholdを使用するようになり、delay_threshold_by_timeは無視されます。

このパラメータは、backend_application_nameが正しく設定され、PostgreSQLのスタンバイのprimary_conninfoのapplication_nameと一致していることに依存しています。

もしこのパラメータが指定されていると、SHOW POOL_NODESpcp_node_infoはレプリケーション遅延をバイト単位ではなく、秒単位で表示します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

prefer_lower_delay_standby (boolean)

このパラメータはdelay_thresholdあるいはdelay_threshold_by_timeを使用しているときに有効です。 onに設定すると、負荷分散先のスタンバイサーバがdelay_thresholdを超えて遅延したときに、プライマリサーバでなく、 backend_weightが0より大きくて1番遅延の少ないスタンバイサーバを負荷分散ノードにします。 全てのスタンバイサーバがdelay_thresholdあるいはdelay_threshold_by_timeを超えて遅延しているか、負荷分散先として最初からプライマリが選ばれた場合はプライマリサーバに送ります。 デフォルトはoffです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

log_standby_delay (string)

レプリケーションの遅延状況をログ出力する条件を指定します。 以下の表にこのパラメータでとることができる値のリストを示します。

表 5-11. スタンバイ遅延のログ出力オプション

説明
'none'スタンバイの遅延はログ出力されない
'always'スタンバイの遅延が0より大きければ、レプリケーション遅延がチェックされる度に、スタンバイの遅延がログ出力される
'if_over_threshold'delay_thresholdあるいはdelay_threshold_by_timeの値を超えた時だけ、スタンバイの遅延がログ出力される(デフォルト)

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。