[pgpool-general-jp: 610] Re: pgpool detected difference of the numberの回避方法

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


> postgresは2台のサーバ(サーバA,サーバB)にあり、そのうち1台(サーバA)にpgpool-IIが同居して、
> レプリケーションモードで動いている構成です。
> 
> このpgpoo-IIで下記のようなエラーが頻発し、アプリケーションが動作不良に陥りました。
> ====
> 2009-08-12 00:46:12 ERROR: pid 11792: pgpool detected difference of
> the number of inserted, updated or deleted tuples. Possible last query
> was: "UPDATE sessions ....."
> 
> ドキュメントによると、このエラーの場合トランザクションabortするだけで、縮退運転には入らないとあります。
> ただ、アプリケーション側としては、ここでエラーが起きると先に進めなくなってしまうため、
> 何らかの方法でこのエラーを回避して、UPDATEが成功する状態にしたいと思っているのですが、
> pgpool-IIの設定なりエラーのハンドリングなりで、このエラーを回避することは可能でしょうか?

現状では「裏から手を回す」、すなわちpgpoolを経由しないで直接PostgreSQL
に接続して原因となったデータを修正するしかありません。

次のバージョンでは、こういうときには縮退するようにした方が良いかなとも
思っていますが、結構難しいところですね。2台しかDBサーバがなくて、デー
タの不一致が出たときに、A, Bどちらのサーバのデータが「不正」であると判
断するのか?それは人間しかできないような気もしますし...
--
Tatsuo Ishii
SRA OSS, Inc. Japan


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