[pgpool-general-jp: 609] Re: pgpoolの安全な停止

Tatsuo Ishii ishii @ sraoss.co.jp
2009年 8月 13日 (木) 18:45:25 JST


> pgpool-II 2.2.2
> postgreSQL 8.3 * 2
> を使用しています。
> 
> postgresは2台のサーバ(サーバA,サーバB)にあり、そのうち1台(サーバA)にpgpool-IIが同居して、
> レプリケーションモードで動いている構成です。
> このpgpool-IIに対して、3台目のサーバ(サーバC)から複数のアプリケーションが接続しています。
> 
> このとき、pgpool-IIを停止する必要があり、
> $ pgpool stop
> を実行したのですが、サーバCのアプリケーションが接続を掴んだ状態のためか、pgpool-IIが停止しませんでした。
> サーバCのアプリケーションを停止すると、pgpool-IIも停止したのですが、これをpgpool-IIから安全に停止したいと思っています。
> 「安全に」というのは、当然ですが、実行中のトランザクションを全て完了してから、ということです。

アプリケーションを停止しなくても、アプリケーションからpgpool-IIへの接
続をアプリケーションが切断すれば、「安全」にpgpool-IIは終了できます。

client_idle_limit を設定すると、クライアントからしばらく何もSQLが送ら
れなくなれば、pgpool-IIが勝手にクライアントを切断してpgpool-IIが終了で
きるようになります。
ただ、現状ではトランザクションを実行中(オープン)かどうかは見ていない
ので、トランザクションの途中で遊んでいるクライアントも切断されてしまい
ます。

「トランザクションがオープンではない」という追加条件を持つ
client_idle_limit 的なものを実装することはさほど難しくないはずです。ど
なたかパッチを作ってくれると嬉しいのですが:-)
--
Tatsuo Ishii
SRA OSS, Inc. Japan


pgpool-general-jp メーリングリストの案内