3.7. PostgreSQLの一時的な停止

保守やバージョンアップの目的で一時的にPostgreSQLを停止したいことがあります。 この節では最小限の停止時間でこの仕事を実行する方法を説明します。

PostgreSQLを停止、再起動するとフェイルオーバが発生します。 ストリーミングレプリケーションモードでない場合、あるいはストリーミングレプリケーションモードであってもサーバがスタンバイサーバであればあまり大きな問題にはなりませ ん。 しかし、サーバがクラスタのプライマリサーバなら、スタンバイサーバの一つが昇格してしまいます。 更には、クラスタに1台のサーバしか残っていなければ、昇格できるスタンバイサーバがないことになります。

この場合はbackend_flagを使ってフェイルオーバを避けることができます。 以下のようにpgpool.confを設定すると、backend0のフェイルオーバが起こりません。

backend_flag0 = DISALLOW_TO_FAILOVER
    

この設定は、Pgpool-IIの再読込か再起動で有効になります。 このフラグが設定されると、バックエンドが使用不可能になってもフェイルオーバが起きません。 バックエンドが使用不可の間、クライアントは以下のエラーメッセージを受け取ります。

psql: error: could not connect to server: FATAL:  failed to create a backend connection
DETAIL:  executing failover on backend
   

バックエンドを再起動すると、クライアントは通常通り接続ができます。 再びフェイルオーバを有効にするには、以下を設定します。

backend_flag0 = ALLOW_TO_FAILOVER
   

そして、Pgpool-IIの再読込か、再起動を行います。