[pgcluster: 429] リカバリー時のエラーに関して

kazunari takahashi kazunari.takahashi @ ctc-g.co.jp
2004年 7月 29日 (木) 19:41:40 JST


高橋と申します.

現在、PGClusterを用いてPostgreSQLのレプリケーション環境を構築すべく、
検証を進めております.

現在は、DBのリカバリ検証をしています.
リカバリー中にマスタDBへのトランザクションを発行しない場合は正常に動作しているのですが、
リカバリ中にマスターDBへinsert文を発行すると、エラーで終了してします.
デバックメッセージに、
「ERROR(PGRsem_unlock): transaction is too busy, please try again after」
なるメッセージが出力されていたのですが、
リカバリ中には、insert文とupdate文を5〜10個ほどDBに発行したのみです.
後でトライしろと言われているので、
-Rオプションでpg_ctlを何回か実行したのですが、だめでした....

どなたかお知恵を拝借できないでしょうか?

[検証環境]

クラスタサーバ×2(solaris8 sparc)
レプリケーションサーバ×1(solaris8 sparc)
pgcluster-1.0.7av9

[リストア方法]

% pg_ctl start -D /usr/local/pgsql/data -o "-i -R"
Start in recovery mode!
Please wait until a data synchronization finishes from Master DB...
postmaster successfully started
%/usr/local/pgsql/bin/postmaster: sorry, recovery failed.

[デバックメッセージ]

DEBUG(replicate_loop): replicate main: selected

DEBUG(pgrecovery_loop): recovery accept port 7778

DEBUG(replicate_loop): wait replicate

DEBUG(read_packet): receive packet no:1

DEBUG(first_setup_recovery): 1st setup target eventdb04

DEBUG(first_setup_recovery): 1st setup port 5432

DEBUG(first_setup_recovery): check another recovery process

DEBUG(PGRsem_unlock): add recovery target to host table

DEBUG(PGRsend_load_balance_packet): set RECOVERY_PGDATA_REQ packet data

DEBUG(PGRget_master): send packet to master eventdb01 recoveryPort 7779

DEBUG(PGRsem_unlock): wait answer from master server

DEBUG(read_packet_from_master): wait

DEBUG(replicate_loop): wait replicate

DEBUG(replicate_loop): wait replicate

DEBUG(read_packet): get answer from master

DEBUG(send_recovery_packet): 1st master eventdb01 - 5432
DEBUG(send_recovery_packet): 1st target eventdb04 - 5432
DEBUG(replicate_loop): wait replicate

DEBUG(replicate_loop): wait replicate

DEBUG(replicate_loop): wait replicate

DEBUG(replicate_loop): wait replicate

DEBUG(read_packet): receive packet no:5

ERROR(PGRsem_unlock): transaction is too busy, please try again after

DEBUG(PGRsem_unlock): 2nd master eventdb01 - 5432
DEBUG(PGRsem_unlock): 2nd target eventdb04 - 5432
DEBUG(PGRsem_unlock): second_setup_recovery end :1
DEBUG(pgrecovery_loop): recovery accept port 7778

DEBUG(replicate_loop): replicate_loop selected

DEBUG(PGRclear_connections): replicate loop exit


高橋 一成 




pgcluster メーリングリストの案内