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

スクゥ 陶山 泰 suyama @ skoo.co.jp
2007年 12月 25日 (火) 18:45:11 JST


陶山です。

        Tue, 25 Dec 2007 17:52:32 +0900 (JST) の
        Re: [pgpool-general-jp: 327] Re: 答えが変わる
        に関するメールについてのお返事です。

Tatsuo> >  エラーを検出するとどうなりますか?
Tatsuo> >  全く変化が見られないのですが、エラーメッセージが出るものなのでしょうか。
Tatsuo> > 
Tatsuo> >  それと
Tatsuo> >  pgpool.conf の load_balance_mode パラメタを false としても同じですね。
Tatsuo> 
Tatsuo> 済みません。ちょっと勘違いしてまして,pgpool-II 2.0からこのあたり挙動
Tatsuo> が変わったようです。
Tatsuo> 
Tatsuo> ロードバランスがオン -> 負荷分散する。更に,トランザクションの中の
Tatsuo> 					 SELECTも負荷分散する
Tatsuo> 
Tatsuo> ロードバランスがオフ -> 常にマスタのみにSELECTを投げる。ただし,
Tatsuo> 					 replicate_select(2.0から新登場)をオンにすると,両
Tatsuo> 					 方のPostgreSQLにSELECTを投げる
Tatsuo> 
Tatsuo> というわけで,SELECTでデータの不一致を検出させるためには,両方のサーバ
Tatsuo> にSELECTを投げる必要がありますが,2.0ではそのために,
Tatsuo> ロードバランスオフ,replicate_selectをオンにしておく必要があります。

■4つのパラメタを確認もしくは変更しました。
 replication_mode = true
 replication_stop_on_mismatch = true
 load_balance_mode = false
 replicate_select = true


起動時のログで確認しています。(pgpool-II を再起動した)
-----------------------------------------------------------------
2007-12-25 17:59:44 DEBUG: pid 28451: key: replication_mode
2007-12-25 17:59:44 DEBUG: pid 28451: value: true kind: 1

2007-12-25 17:59:44 DEBUG: pid 28451: key: replication_stop_on_mismatch
2007-12-25 17:59:44 DEBUG: pid 28451: value: true kind: 1
2007-12-25 17:59:44 DEBUG: pid 28451: replication_stop_on_mismatch: 1

2007-12-25 17:59:44 DEBUG: pid 28451: key: load_balance_mode
2007-12-25 17:59:44 DEBUG: pid 28451: value: false kind: 1

2007-12-25 17:59:44 DEBUG: pid 28451: key: replicate_select
2007-12-25 17:59:44 DEBUG: pid 28451: value: true kind: 1
-----------------------------------------------------------------


■実行してみると
postgres @ main:~$ psql -p mport bench_replication
    ( mport は本当は数値のポート番号です。5432 に設定 )

bench_replication=# SELECT * FROM branches;
 bid | bbalance | filler
-----+----------+--------
   1 |        0 |
  99 |       99 |
  98 |       98 |
(3 rows)

  *** エラーが表示されません。***

 sub サーバでは、
bench_replication=# select * from branches;
 bid | bbalance | filler
-----+----------+--------
   1 |        0 |
  99 |       99 |
(2 rows)

  *** 確かにデータに食い違いがあります。***


■ pgpoolAdmin のpgpoolステータスでは、両ノードともに「ノード稼動中、接
続有り」となっています。

 ちなみに無関係かとは思いますが、pgpoolAdmin の「pgpool.conf設定」には、
replicate_select は表示されません。

 なお、psql の実行は、ユーザ postgres で行ってます。

■バージョン
pgpoolAdmin 1.0.0
pgpool-II 2.0.1
postgresql 8.1
Debian/GNU Linux 4



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