5.5. バックエンドの設定

5.5.1. バックエンド接続の設定

backend_hostname (string)

backend_hostnameには接続先のPostgreSQLバックエンドを指定します。 Pgpool-IIがサーバと通信するのに使われます。

TCP/IP通信では、このパラメータはホスト名またはIPアドレスをとることができます。 スラッシュ(/)で始まる場合、TCP/IPではなくUNIXドメインでの通信が使用され、値はソケットファイルが作成されるディレクトリ名となります。 backend_hostnameに空文字('')が指定された場合のデフォルトの動作は、/tmpに作成したUNIXドメインソケットで接続します。

パラメータ名の末尾に数字を付加することで複数のバックエンドを指定することができます(たとえばbackend_hostname0)。 この数字のことを「DBノードID」と呼び、0から開始します。 DBノードIDが0のバックエンドは「メインノード」と呼ばれます。 複数のDBノードを定義している場合、条件によってはメインノードがダウンしても運用を続けることができます(いくつかのモードを除きます)。 この場合は、稼働中かつDBノードIDがもっとも若いものが新しいメインノードになります。

ストリーミングレプリケーションモードで運用している場合は、DBノードIDが0のノードには特別な意味はないことに注意して下さい。 むしろ、そのDBノードが「プライマリノード」かどうかを気にするべきです。 詳細は項5.8項5.10項5.12をご覧ください。

1台しかPostgreSQLを使用しない場合は、backend_hostname0で指定してください。

新しいノードはパラメータ行を追加して、設定ファイル再読み込みすることで追加できます。 ただし、既存の値を変更することはできないので、その場合にはPgpool-IIを再起動してください。

backend_port (integer)

backend_portにはバックエンドのポート番号を指定します。 パラメータ名の末尾に数字を付加することで複数のバックエンドを指定することができます(たとえばbackend_port0)。 1台しかPostgreSQLを使用しない場合は、backend_port0で指定してください。

新しいノードはパラメータ行を追加して、設定ファイル再読み込みすることで追加できます。 ただし、既存の値を変更することはできないので、その場合にはPgpool-IIを再起動してください。

backend_weight (floating point)

backend_weightにはバックエンドの負荷分散の比率を指定します。 0以上の整数または浮動小数点を指定できます。 パラメータ名の末尾に数字を付加することで複数のバックエンドを指定することができます(たとえばbackend_weight0)。 1台しかPostgreSQLを使用しない場合は、backend_weight0で指定してください。

新しいbackend_weightはパラメータ行を追加して、設定ファイル再読み込みすることで追加できます。 Pgpool-II V2.2.6V2.3以降では、設定ファイルの再読込みで値を変更できます。 ただし、この効果が反映されるのは新しく確立されたクライアントセッションからです。 ストリーミングレプリケーションモード、ロジカルレプリケーションモード、slonyモードにおいて、スタンバイに対して管理業務を実施する都合上、問い合わせがそのスタンバイに送られるのを防ぎたい場合に有用です。

5.5.2. バックエンドデータの設定

backend_data_directory (string)

backend_data_directoryにはバックエンドのデータベースクラスタのディレクトリを指定します。 パラメータ名の末尾に数字を付加することで複数のバックエンドを指定することができます(たとえばbackend_data_directory0)。 1台しかPostgreSQLを使用しない場合は、backend_data_directory0で指定してください。 このパラメータはオンラインリカバリの際に使用します。 オンラインリカバリを使用しない場合には設定する必要はありません。

新しいbackend_data_directoryはパラメータ行を追加して、設定ファイル再読み込みすることで追加できます。 ただし、既存の値を変更することはできないので、その場合にはPgpool-IIを再起動してください。

backend_flag (string)

backend_flagはバックエンド単位での様々な挙動を制御するフラグです。 パラメータ名の末尾に数字を付加することで複数のバックエンドを指定することができます(たとえばbackend_flag0)。 1台しかPostgreSQLを使用しない場合は、backend_flag0で指定してください。

新しいバックエンドフラグはパラメータ行を追加して、設定ファイル再読み込みすることで追加できます。 現在以下のものがあります。 複数のフラグを"|"で連結して指定することができます。

表 5-4. バックエンドフラグ

フラグ説明
ALLOW_TO_FAILOVERフェイルオーバやデタッチが可能になります。 これがデフォルトの動作です。 DISALLOW_TO_FAILOVERと同時には指定できません。
DISALLOW_TO_FAILOVERフェイルオーバやデタッチを禁止します。 HeartbeatPacemakerなどのHA (High Availability)ソフトでバックエンドを保護しているなどの場合に有用です。 ALLOW_TO_FAILOVERと同時には指定できません。
ALWAYS_PRIMARYストリーミングレプリケーションでのみ有効です。 ストリーミングレプリケーションモードについては項3.3.2をご覧ください。 このフラグがバックエンドのどれかにセットされていると、Pgpool-IIはバックエンドにアクセスしてプライマリノードを探すのではなく、このフラグがセットされているノードをプライマリノードと見なします。 これは、Amazon Aurora for PostgreSQL Compatibilityのような、プライマリサーバに固定のホスト名が割り当てられるシステムで有用です。 設定例については項8.5をご覧ください。

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

backend_application_name (string)

backend_application_nameはWAL logをプライマリサーバから読み込むwalreceiverのために使用するapplication_nameを設定します。 ですから、ストリーミングレプリケーションモード以外では設定する必要がありません。 また、このパラメータはSHOW POOL_NODESpcp_node_infoコマンド中に表示される"replication_state"と"replication_sync_state"のために使用されます。 更に、delay_threshold_by_timeもこのパラメータを必要とします。

たとえば、プライマリノードがbackend0(そのホスト名は"host0"とします)、スタンバイノードはbackend1で、backend1のbackend_application_nameは"server1"であるとします。 すると、postgresql.confprimary_conninfoパラメータは次のようになるはずです。

primary_conninfo = 'host=host0 port=5432 user=postgres application_name=''server1'''
      

recovery_1st_stage_commandがそのパラメータを生成します。 コマンドの完全な例に関しては、項8.2.6.8をご覧ください。

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