[pgsql-jp: 41492] hot_standby_feedbackの影響について
pascalpascal @ snow.plala.or.jp
pascalpascal @ snow.plala.or.jp
2013年 8月 28日 (水) 22:03:04 JST
宮本と申します。
現在、PostgreSQL(9.1.6)を運用しております。
pgpool-IIで、ストリーミングレプリケーションをしていますが、
ERROR: canceling statement due to conflict with recovery
というエラーがときどきスレーブ側のログに出力されています。
(マスター1台、スレーブ1台の環境です。)
このエラーをなくすため、hot_standby_feedbackをonに設定することを
検討しています。
hot_standby_feedbackをonに設定すると、スレーブ側の参照処理が
終了しないとマスタ側の更新がスレーブ側に反映しないと思いますが、
細かいところがわかりません。
canceling statement due to conflict with recoveryが発生するのは
以下のような流れだと思います。
(hot_standby_feedbackの設定なしの場合)
(1) スレーブDBでテーブル tab1のデータAをselect(参照)
(2) マスタDBでテーブル tab1のデータAをupdateで更新(A→A')
(3) (2)の内容をスレーブDBに反映させる処理が実行される
(4) (2)と(3)で競合が発生する。
(5) 一定時間経過した後、(1)の処理がキャンセルされる
もし、hot_standby_feedbackをonに設定した場合で、
(2)の更新対象の行が2件あり、 A→A', B→B' という更新だった場合、
(1)の参照処理が実行中の間は、スレーブDBでは、B→B'も実行されないのでしょうか。(更新処理は1つのSQL文で2件の更新をしたという想定です)
hot_standby_feedbackをonにしたときの影響を知りたいので、
ご存知の方はご教示お願いします。
環境は以下の通りです。
環境
OS: Redhat Enterprise Linux 5.7
PostgreSQL: 9.1.6
pgpool-II : 3.2
以上です。
-----------------------------------
pgsql-jp メーリングリストの案内