[pgpool-general-jp: 575] Re: replication_stop_on_mismatch
    Tatsuo Ishii
    ishii @ sraoss.co.jp
       
    2009年 7月  8日 (水) 09:21:55 JST
    
    
  
> 現在pgpool-II-2.2.2で
> バックエンド2台でレプリケーションモードで使用しております。
> 
> pgpool.confで関係すると思われる設定箇所を抜粋します。
> 
> replication_mode : true
> load_balance_mode : false
> replicate_select : false
> replication_stop_on_mismatch : true
> 
> マニュアル上replication_stop_on_mismatchの説明として
> trueを指定すると不一致があった場合
>    に強制的に縮退運転に入るという記述がありましたので
> 試しに異なる件数のテーブルを用意して、select と updateを実行してみました。
> 
> ●件数が異なるようにselect文を発行すると主系の結果が返ってきました。
> replicate_select : falseであるため、仕様通りの動きと理解しております。
> 
> ⇒ここでエラーを発生させるためには「replicate_select : true」とする他ないのでしょうか?
はい、そうです。
> ●更新件数が異なるようにupdateを発行すると、エラーが発生しましたが
> 縮退しませんでした。
> 
> ログには下記だけ出力されていました。
>   pgpool detected difference of the number of inserted, updated or delete
> d tuples. Possible last query was: "update tellers set bid=1 where tid=8;
>   
> replicate_select : trueとして同様にupdateを試しましたが、やはり結果は
> 同じでした。(replicate_selectなので関係ないですよね)
> 
> ⇒updateの挙動としては(おそらくdeleteも?)更新結果の件数が異なる
>  場合でも縮退しないものなのでしょうか?
INSERTもそうです(めったに起きませんが)。
ただ、このケースで縮退しないのが果たして良いのかどうかに関しては議論の
余地があるところだと思います。
もしreplication_stop_on_mismatchがtrueの場合には、このケースで縮退させるよ
うにするとして、賛成、反対の方のご意見を広く伺いたいと思います。
> またマニュアル上replication_stop_on_mismatchの説明にある
> 「マスターDBと他のDBノードの間でデータの不一致があった場合
>    」
> とは何をもって不一致としているのでしょうか?
「PostgreSQLから流れてくる応答パケットの数や種類が異なったとき」という
のが一番正確な説明です。典型的な例としては、SELECTが返す件数が異なった
とき、PostgreSQLのクエリ実行結果で、片方が正常終了、もう一方が異常終了、
などの場合です。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
    
    
pgpool-general-jp メーリングリストの案内