[pgpool-general-jp: 328] Re: 答えが変わる

Tatsuo Ishii ishii @ sraoss.co.jp
2007年 12月 25日 (火) 17:52:32 JST


> 石井さん、こんにちは。陶山です。
> 
>         Tue, 25 Dec 2007 16:37:30 +0900 (JST) の
>         Re: [pgpool-general-jp: 325] 答えが変わる
>         に関するメールについてのお返事です。
> 
> Tatsuo> >  なぜ、2行しか見えなかったり、3行見えたりするのかわかりません。
> Tatsuo> >  (データを信頼できなくなりますね。)
> Tatsuo> 
> Tatsuo> ロードバランスがオンになっているからでしょう。
> 
>  すみませんです。投稿した直後に気づきました。
> 
> 
> Tatsuo> psql -h main -p mport bench_replication して,
> Tatsuo> 
> Tatsuo> BEGIN;
> Tatsuo> SELECT * FROM branches;
> Tatsuo> 
> Tatsuo> とすれば,ロードバランスしないので,エラーを検出するはずです。
> 
>  エラーを検出するとどうなりますか?
>  全く変化が見られないのですが、エラーメッセージが出るものなのでしょうか。
> 
>  それと
>  pgpool.conf の load_balance_mode パラメタを false としても同じですね。

済みません。ちょっと勘違いしてまして,pgpool-II 2.0からこのあたり挙動
が変わったようです。

ロードバランスがオン -> 負荷分散する。更に,トランザクションの中の
					 SELECTも負荷分散する

ロードバランスがオフ -> 常にマスタのみにSELECTを投げる。ただし,
					 replicate_select(2.0から新登場)をオンにすると,両
					 方のPostgreSQLにSELECTを投げる

というわけで,SELECTでデータの不一致を検出させるためには,両方のサーバ
にSELECTを投げる必要がありますが,2.0ではそのために,
ロードバランスオフ,replicate_selectをオンにしておく必要があります。

で,エラーを検出すると,

test=# select * from t1;
ERROR:  kind mismatch between backends
HINT:  check data consistency between master and other db node
server closed the connection unexpectedly
	This probably means the server terminated abnormally
	before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

という感じのエラーになります。もしも replication_stop_on_mismatchがオ
ンならば,縮退が起きます。

うーん,やはりトランザクションの内側では,ロードバランスさせない方がよ
いかな?
--
Tatsuo Ishii
SRA OSS, Inc. Japan


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