[pgcluster: 13] クラスタサーバの復旧がうまくいきません

Takegami, Takashi takegami @ isp.co.jp
2004年 1月 7日 (水) 17:44:03 JST


竹上と申します。

PGCluster1.0.6を使って、冗長性のあるWEB+DBシステムを構築しています。
お世話になっております。

■クラスタサーバの復旧がうまくいきません。どう対処すればよいか、ご教授
 願えないでしょうか?

 - 復旧のうまくいかない状況が2点あります。
 - それに関係すると思われる状況に対する質問が1点あります。

 よろしくお願いいたします。


 <<環境・構成>>
  OS:RedHat8

  ----web機---              --db01機----------
 | WEBサーバ |----------->| クラスタサーバ1 |
 |           |            | レプリケータ    |
  ------------              ------------------
                                       ↓
                             --db02機---------
                            |クラスタサーバ2 |
                            |               |
                             -----------------

  - ロードバランサは使用していません。
  - クラスタサーバ1とレプリケーションサーバは同マシンです。
  - web機よりdb01機に接続します。
  - DB接続はJDBCを用いています。
  - DBのコネクションプーリングの仕組みはTorque(Jakarta Turbineフ
   レームワークの一部)を用いています。


■復旧のうまくいかない状況(1)
 
 - db02を-Rオプションにて正常に復旧後、webよりdb01に対して更新系の処
  理を行うとすぐにdb02がerrorとなります。
 
 【手順】
  1. db02の停止。(% pg_ctl stop -m fast の後 % killall postmaster)

  2. db02を復旧。(% pg_ctl start -o "-R")

  3. webより更新処理を行う。

  4. レプリケータのログにdb02の「error」が表示される。

 【確認項目】
  - db02の復旧前に、webからdb01(5432)へのTCP接続を切断すれば、問題
   なく動作しました。

  - webからdb01(5432)へのTCP接続を切断前後の違いは、以下です。db01
   機において、netstatコマンドで調べました。
    [前]レプリケータよりdb02(5432)へのTCP接続のCLOSE_WAITが複数。
    [後]レプリケータよりdb02(5432)へのTCP接続のCLOSE_WAITが一つ。

 【質問】
  - webからdb01への接続を切ることなしに、db02を正常に復旧させたい
   のですが、どう対処したらよいでしょうか?


■復旧のうまくいかない状況(2)
 
 - db02の復旧中に、db01に対して更新もしくは参照がなされると、復旧作
  業が途中で止まってしまう。

 【手順】
  1. db02の停止。(% pg_ctl stop -m fast の後 % killall postmaster)

  2. db02を復旧。(% pg_ctl start -o "-R")

  3. 2.の復旧中に、webより「select 1」を発行する。

  4. db02の復旧作業が途中で止まってしまう。

 【質問】
  - 上記の状況は仕様でしょうか?


■上記の2点に関係すると思われる状況

 - 更新系の処理(insert, update)が一度行われた後は、参照系の処理(sele
  ct)もレプリケートされている現象を確認しました。
 
 【確認項目】
  - レプリケータをデバックモードで起動して出力されるログにて確認。
  - 更新系の処理が行われる前は、参照系の処理はレプリケータのログに
   出力されません。
  - 更新系の処理が行われると、その後は、同じ参照系の処理もレプリケ
   ータのログに出力されました。
  - 更新系の処理は、トランザクションを発行しており、必ずcommitもし
   くはrollbackしています。
  - 参照系の処理は、トランザクションを発行していません。autocommit
   モードはONにしています。
  - DBへのコネクションはプーリングしています。毎回の接続/切断はして
   いません。

 【質問】
  - 上記の状況は仕様でしょうか?


以上です。よろしくお願い致します。
---
From; Takegami, Takashi
E_mail; takegami @ isp.co.jp




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