[pgsql-jp: 33189] Re: pgpool-1.2.3のreplication_strict

Tomoyuki Asakawa tom @ asakawa.ne.jp
2004年 6月 10日 (木) 10:42:59 JST


あさかわです。

> 失礼しました.以下のパッチで直ると思います.

パッチをあてて、pgpoolを起動した場合
  replication_strict  = true
ではpgpoolが起動して利用できますが
  replication_strict  = false
では、pgpoolが起動しても
conecctionでエラーになります。

多分これは、サーバAとサーバBの
DATABASEのoidが違うからだと思いますがそうでしょうか?

このTESTのきっかけとなった

>> そもそもなんでFalseにしたいかと言うと
>>
>> PHPで語でいうと、INSERT後に、pg_last_oidすると、エラーになるからです。
>> (INSERTはrepricateされています)

これは。

pg_last_oidがエラーになっていたのではなく
その次の、select uid from xxxx where oid='$oid'
でエラーになっていました。

(select max(oid) from xxxx ではエラーにならない)

> これはpgpoolがoidのreplicationに対応できないのがそもそもの問題で、strict
> modeを外しても(マスターとスレーブのOIDが違うから)エラーになると思うの
> ですが、どうでしょうか?

やはり、上記が原因だとおもいます。


>
> これは関係ないですね.こちらではstrictモードでも
> 逆に言うと,マスタとセカンダリでpgpoolを経由しないでINSERTを直に行わな
> い限り,ずれないはずです(random()やcurrent_timestampなどを使った問い合
> わせを発行している関係で,INSERT件数がマスタとセカンダリで異なってくる
> ケースを除く).
>

との事でしたが。

サーバAとBの、DATABASEは
サーバAのDTABASEを。pg_dumpして

pgpoolを経由して、loadしたものですが

oidの値をみると、両サーバでちがっていました。







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