[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 メーリングリストの案内