3.5. Pgpool-IIとPostgreSQLの起動

Pgpool-IIを起動するには、以下を実行してください。

$ pgpool -f /usr/local/etc/pgpool.conf -F /usr/local/etc/pcp.conf

これにより、サーバがバックグラウンドモードで起動します。 "-f"はpgpoolの主設定ファイルへのパスを指定します。 "-F"はPgpool-IIの管理サーバであるpcpサーバの設定ファイルへのパスを指定します。 他のオプションに関しては、pgpoolのマニュアルを見てください。

Pgpool-IIを起動する前に、PostgreSQLを起動しなければなりません。 なぜなら、もしPostgreSQLが起動していなければ、Pgpool-IIはフェイルオーバの処理を起動し、PostgreSQLをダウン状態にしてしまうからです。

たとえばPgpool-IIPostgreSQLが別のサーバにインストールされているような理由でPostgreSQLの起動順序を制御するのが難しい場合は、search_primary_node_timeoutを長めにし(デフォルトは5分です)、Pgpool-IIが、search_primary_node_timeoutが終了するまでPostgreSQLの起動を待つようにすることができます。 PostgreSQLが、search_primary_node_timeoutが完了するまでの間に起動すれば問題ありません。 もしPostgreSQLが起動する前にsearch_primary_node_timeoutが完了すると、プライマリノードが検出されず、DML/DDLを実行できなくなります。 こうなったら、Pgpool-IIを再起動する必要があります。 プライマリノードが存在するかどうかを確認するには、SHOW POOL_NODESコマンドを使ってください。

search_primary_node_timeoutはストリーミングレプリケーションモードでのみ使用できることに注意してください。 そのパラメータはストリーミングレプリケーションモードにしかないからです。 ストリーミングレプリケーションモードの詳細は項3.3.2をご覧ください。 他のモードでは、ヘルスチェック(項5.8参照)のパラメータを調整し、PostgreSQLが使えるようになるまでに十分時間が取れるようにしてください。

Pgpool-IIが起動するまでにPostgreSQLが使えないことをヘルスチェックが検出すると、PostgreSQLのいくつかが「down」状態であると認識されます。 この場合は手動でpcp_attach_nodeコマンドを使ってPostgreSQLサーバを「up」状態にしなければなりません。 クライアントがPostgreSQLが利用可能になる前にPgpool-IIに接続しようとすると、フェイルオーバが起こることがあります。 この場合もpcp_attach_nodeコマンドを使ってPostgreSQLサーバを「up」状態にしなければなりません。