[pgcluster: 215] レプリケーションサーバ障害時

Masanari Ishida pgcluster@ml.postgresql.jp
Thu, 25 Mar 2004 16:22:04 +0900


お世話になります。石田です。

レプリケーションサーバを2台用意し、レプリケーションサーバ
障害時のテストをPGCluster-1.0.6cv9で行っています。

cluster.confにはREP1を1番目、REP2を2番目に記述したとします。

psqlでクラスタサーバに接続している時にREP1で障害が発生した場合、
更新系の処理を行うとレプリケートされないようです。
(REP1/2はデバッグモードで立ち上げていますが、REP2に動きはありま
せん。)

ただし、一度切断して再度psqlで接続するとREP2に処理が移ってレプリ
ケートされます。
これは仕様ですか?仕様だとしたら、コネクションプーリングを行っ
ているアプリで問題が発生するようなきがします・・・

テストした例:
$ psql -h CL1 db1
db1=# insert into tbl1 values (1);
INSERT 66149 1 
db1=#
<REP1障害発生>
db1=# insert into tbl1 values (1);
INSERT 66150 1 
db1=#                 ←すぐプロンプトは戻るがREP2のデバッグには
            なにも表示されない
db1=# insert into tbl1 values (1);
INSERT 66151 1 
db1=#                 ←プロンプトに戻るまでに20秒くらいかかる
            REP2のデバッグには何も表示されない
db1=# \q
$
$ psql -h CL1 db1
db1=# insert into tbl1 values (1);
INSERT 66152 1    ←REP2のデバッグに表示され、レプリケートされる
db1=#

<REP1>の障害発生からpsqlを抜けるまでのINSERTはレプリケート
されていない。
ロードバランサを使用した場合も同様でした。


----------------------------------------
Masanari Ishida < ishida@credist.co.jp >
----------------------------------------