[pgsql-jp: 41227] Re: PostgreSQL 9.1.2 でレプリケーション競合エラーについて

kasaharatt @ nttdata.co.jp kasaharatt @ nttdata.co.jp
2012年 10月 2日 (火) 13:55:18 JST


笠原と申します。

> 【エラーメッセージ】
> ERROR:  リカバリーで競合が発生したためステートメントをキャンセルしています
> 詳細:  削除されるべきバージョンの行をユーザクエリが参照しなければならなかった可能性がありました。
こちらは、マスタ側にてVACUUMやHOTでクリーンナップされた古い行を、スタンバイで参照していた
影響で出ていると思います。
# 通常のクエリの結果以外にも、メンテナンスの結果もレプリケーションでスタンバイに流されます。
競合については下記のページを参照してください。
http://www.postgresql.jp/document/9.1/html/hot-standby.html

以下のパラメータ値を引き上げてみて下さい。値は調整が必要なため、まずは
100程度から開始して、様子見しつつ増減すると良いかもしれません。
vacuum_defer_cleanup_age

これは、マスタ側にて通常クリーンナップされる不要領域を、意図的に残存させておく
際に制御します。これにより、マスタでは通常より不要領域が残りやすくなりますが
クリーンナップ処理とスタンバイの参照が競合する確率は減らせます。

詳しくは下記のページを参照してください。
http://www.postgresql.jp/document/9.1/html/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-MASTER

> ERROR:  クライアント接続に想定外のEOFがありました
> 詳細:  符号化方式"UTF8"で無効なバイトシーケンスです: 0x8e
UTF8にマッピング不可能な文字コードを扱おうとしているように見えます。
SJISあたりのデータを、client_encoding=UTF8の状況下で挿入したりしていませんか?

扱うデータのエンコーディングに合わせてclient_encodingを指定してみて下さい。

> -----Original Message-----
> From: pgsql-jp-bounces @ ml.postgresql.jp
> [mailto:pgsql-jp-bounces @ ml.postgresql.jp] On Behalf Of Tsuyoshi Masuda
> Sent: Tuesday, October 02, 2012 11:02 AM
> To: pgsql-jp @ ml.postgresql.jp
> Subject: [pgsql-jp: 41226] PostgreSQL 9.1.2 でレプリケーション競合エラ
> ーについて
> 
> いつも大変お世話になっております。MITCC増田と申します。
> 
> PostgreSQL 9.1.2(centos版) のレプリケーション環境にて次のような
> エラーメッセージが頻繁にログに出力され、データ取得できない問題がありま
> す。
> どなたか回避方法をご存じの方がいらっしゃいましたら、
> ご教示頂けませんでしょうか?
> 
> ちなみに、pg_basebackupで最新化した直後は、
> しばらくこのエラーは発生しません。
> 
> 【エラーメッセージ】
> ERROR:  リカバリーで競合が発生したためステートメントをキャンセルしてい
> ます
> 詳細:  削除されるべきバージョンの行をユーザクエリが参照しなければなら
> なかっ
> た可能性がありました。
> 
> ERROR:  クライアント接続に想定外のEOFがありました
> 詳細:  符号化方式"UTF8"で無効なバイトシーケンスです: 0x8e
> 
> 【環境】
> [マスタ]->[スレーブ]
> 
> 【マスタ側設定】
> postgresql.conf
> #-----------------------------
> # REPLICATION OPTIONS MASTER
> #-----------------------------
> wal_level = hot_standby
> archive_mode = off
> wal_keep_segments = 32
> max_wal_senders = 4
> application_name = 'pg_master_db'
> 
> 【スレーブ側設定】
> postgresql.conf
> #----------------------------
> # REPLICATION OPTIONS SLAVE
> #----------------------------
> wal_level = hot_standby
> archive_mode = off
> wal_keep_segments = 32
> max_wal_senders = 4
> application_name = 'pg_slave_db'
> hot_standby = on
> 
> recovery.conf
> 
> #----------------------------
> # REPLICATION OPTIONS
> #----------------------------
> standby_mode = 'on'
> primary_conninfo = 'host=pg_master_db port=5432
> application_name=pg_slave_db'
> 
> 以上、宜しくお願い致します。
> 
> 



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