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

Tsuyoshi Masuda tmasuda @ mitcc.biz
2012年 10月 2日 (火) 17:40:58 JST


笠原様
お世話になります。MITCC増田です。

ご回答有難う御座いました。

笠原様のおっしゃる通り、vacuum_defer_cleanup_ageを変更したところ、
エラーメッセージが表示されなくなりました。

本当に有難うございます。

変更内容は以下の通りです。

【対象ファイル】

postgresql.conf

【変更前】

vacuum_defer_cleanup_age = 0


【変更後】

vacuum_defer_cleanup_age = 1000

一度、「vacuum_defer_cleanup_age = 100」で実行しましたが、
同様のエラーが発生しましたので、値を1000に変更したところ、
変更してから2時間が経過しましたが、エラーが発生していません。
この状態でしばらく様子をみたいと思います。

以上、宜しくお願い致します。


2012年 10月 2日(火)1:55 pm に kasaharatt @ nttdata.co.jp さんは書きました:
> 笠原と申します。
>
>> 【エラーメッセージ】
>> 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'
>>
>> 以上、宜しくお願い致します。
>>
>>
>
>


-- 
-------------------------------------------
 増田 剛   Tsuyoshi Masuda
web site : http://mitcc.biz/
Phone No : 090-5781-4203
E-mail   : tmasuda @ mitcc.biz
-------------------------------------------



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