5.9. フェイルオーバとフェイルバック

5.9.1. フェイルオーバとフェイルバックの設定

failover_command (string)

PostgreSQLバックエンドノードが切り離される時に実行するユーザコマンドを指定します。 Pgpool-IIはコマンド実行の前に、以下の特殊文字をバックエンドの具体的な情報に置き換えます。

表 5-6. フェイルオーバコマンドオプション

特殊文字説明
%d切り離されたノードのDBノードID
%h切り離されたノードのホスト名
%p切り離されたノードのポート番号
%D切り離されたノードのデータベースクラスタパス
%M古いマスターノードのID
%m新しいマスターノードのID
%H新しいマスターノードのホスト名
%P古いプライマリノードのID
%r新しいマスターノードのポート番号
%R新しいマスターノードのデータベースクラスタパス
%% '%'文字

注意: フェイルオーバーが実行されると、Pgpool-IIは子プロセスを切断します。 これにより、Pgpool-IIへの全てのアクティブセッションが終了されます。 その後、Pgpool-IIfailover_commandを実行し、コマンドが完了した後にPgpool-IIはクライアントからの接続を再び受け付ける準備のため新しい子プロセスを起動します。

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

failback_command (string)

PostgreSQLバックエンドノードがPgpool-IIに復帰された時に実行するユーザコマンドを指定します。 Pgpool-IIはコマンド実行の前に、以下の特殊文字をバックエンドの具体的な情報に置き換えます。

表 5-7. フェイルバックコマンドオプション

特殊文字説明
%d復帰したノードのDBノードID
%h復帰したノードのホスト名
%p復帰したノードのポート番号
%D復帰したノードのデータベースクラスタパス
%M古いマスターノードのID
%m新しいマスターノードのID
%H新しいマスターノードのホスト名
%P古いプライマリノードのID
%r新しいマスターノードのポート番号
%R新しいマスターノードのデータベースクラスタパス
%% '%'文字

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

follow_master_command (string)

プライマリノードのフェイルオーバー後に実行するユーザコマンドを指定します。 この機能は、マスタースレーブモードでストリーミングレプリケーション構成の場合のみ有効です。 Pgpool-IIはコマンド実行の前に、以下の特殊文字をバックエンドの具体的な情報に置き換えます。

表 5-8. フォローマスターコマンドオプション

特殊文字説明
%d切り離されたノードのDBノードID
%h切り離されたノードのホスト名
%p切り離されたノードのポート番号
%D切り離されたノードのデータベースクラスタパス
%M古いマスターノードのID
%m新しいマスターノードのID
%H新しいマスターノードのホスト名
%P古いプライマリノードのID
%r新しいマスターノードのポート番号
%R新しいマスターノードのデータベースクラスタパス
%% '%'文字

注意: follow_master_commandが空文字列でない場合、ストリーミングレプリケーションによるマスタースレーブでプライマリノードのフェイルオーバーが完了した後に、Pgpool-IIは新しいプライマリ以外のすべてのノードを切り離し、クライアントから再び接続を受け付ける準備のため再度新しい子プロセスを起動します。 その後、Pgpool-IIは切り離されたそれぞれのノードに対してfollow_master_commandに設定したコマンドを実行します。

通常は、follow_master_commandコマンドはpcp_recovery_nodeコマンドを呼んで新しいプライマリからスレーブをリカバリするために使用します。

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

fail_over_on_backend_error (boolean)

onに設定した場合、Pgpool-IIPostgreSQLバックエンド接続からの読み出し、書き込みのエラーをバックエンドノードの故障と見なし、現在のセッションを切断した後にそのノードをフェイルオーバします。 offに設定した場合、そのようなエラーの場合でもPgpool-IIは単にエラーをレポートしセッションが切断するのみです。

注意: fail_over_on_backend_errorをoffにする場合は、バックエンドのヘルスチェックを有効にすることをお勧めします(項5.8をご覧ください)。 なお、PostgreSQLバックエンドサーバが管理コマンドでシャットダウンされたことをPgpool-IIが検知した場合には依然としてフェイルオーバが起こることに注意してください。

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

search_primary_node_timeout (integer)

フェイルオーバが起きた時にプライマリノードを検索するための最大時間を秒単位で指定します。 Pgpool-IIは、ここで設定したした時間の間にプライマリノードを見つけられなかった場合、探すのを諦めます。 デフォルト値は300です。 0を指定すると、永久に検索し続けます。

このパラメータはストリーミングレプリケーションによるマスタースレーブモードの場合のみ有効です。

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

5.9.2. rawモードにおけるフェイルオーバ

rawモードにおいて、複数のバックエンドサーバが定義されている場合、フェイルオーバが可能です。 通常の動作ではPgpool-IIbackend_hostname0で指定したバックエンドにアクセスします。 何らかのリユでbackend_hostname0のサーバに障害が発生すると、Pgpool-IIbackend_hostname1へのアクセスを試みます。 これが失敗した場合にはPgpool-IIbackend_hostname2, 3と以下同様に試みます。