[pgcluster: 2] クラスタサーバ障害発生時のリカバリー方法について。

Tsuru Eiichi tsuru @ hht.co.jp
2003年 12月 25日 (木) 14:45:03 JST


いつもお世話になります。
つるつると申します。

現在以下の構成で、PGClusterをテスト運用しています。
-----------------------------
 R1:レプリケーションサーバ
 C1:クラスタサーバ1(マスタ)
 C2:クラスタサーバ2(スレーブ)
 合計:3台
-----------------------------

-質問-
C2クラスタサーバに障害が発生した事を想定し、復旧(-Rオプション)時の
動作確認を行っていますが、上手く復旧してない様です。
「-R」オプションを利用した復旧が上手く動作せず、どこか設定等に
誤りが有るのでしょうか?怪しい点や確認点等を御指摘できる方が
いらっしゃいましたら、御教授頂けないでしょうか?

-前提-
・C1とC2で双方の「authorized_keys」を交換し、catコマンドで双方の
 authorized_keysファイルに追加済みです。
・手動でrsyncを使うと、正しくファイルコピーされる事は確認済みです。
・$ rsync -auzr -e "ssh -1" C1:/usr/local/pgsql/data /usr/local/pgsql

-検証手順-
1.C2が破損したと仮定する。
  C2端末から以下のコマンドで復旧を試みる。
 $ bin/pg_ctl start -o "-i -R"

2.R1端末に以下のデバッグ情報が表示されます。
 DEBUG(replicate_loop): replicate main: selected
 DEBUG(replicate_loop): wait replicate
 DEBUG(sem_unlock): recovery main: selected
 DEBUG(pgrecovery_loop): recovery accept port 7778
 DEBUG(read_packet): receive packet
 DEBUG(read_packet): no = 1
 DEBUG(read_packet): max_connect = 32
 DEBUG(read_packet): port = 5432
 DEBUG(read_packet): recoveryPort = 7779
 DEBUG(read_packet): hostName = C2
 DEBUG(read_packet): pg_data =
 DEBUG(read_packet): receive packet no:1
 DEBUG(first_setup_recovery): 1st setup target C2
 DEBUG(first_setup_recovery): 1st setup port 5432
 DEBUG(first_setup_recovery): check another recovery process
 DEBUG(sem_unlock): add recovery target to host table
 ERROR(send_packet): PGR_Create_Socket_Connect failed
 DEBUG(send_packet): set RECOVERY_PGDATA_REQ packet data
 DEBUG(PGRget_master): name C1 flg 1 port 5432 recoveryPort 7779
 DEBUG(PGRget_master): name C2 flg 1 port 5432 recoveryPort 7779
 ERROR(PGRget_master): get master info error , master may be down
 DEBUG(sem_unlock): 1st master C1 - 5432
 DEBUG(sem_unlock): 1st target C2 - 5432
 DEBUG(sem_unlock): wait recovery
 DEBUG(replicate_loop): replicate_loop selected
 DEBUG(read_packet): connection closed
 ERROR(read_packet): read_packet failed
 DEBUG(child_wait): replicate main: selected
 DEBUG(sem_lock): check recovered host 1

3.C2端末に以下のメッセージが表示されます。
 [postgres @ C2 pgsql] $bin/postmaster: recovery failed



以上、よろしくお願いします。





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