<div>PGPOOL-IIを使わせていただいています。有り難うございます。</div>
<div> </div>
<div>オンラインリカバリーの件で質問がありメールさせていただきます。</div>
<div> </div>
<div>現在立ち上げているものは、PGPOOL-IIの最新バージョンと3台のPOSTGRESサーバーで構成しています。</div>
<div>SYSTEMはCENTOSです。 マニュアルにしたがってONLINEリカバリーのスクリプトを使いましたが、以下の不具合があり</div>
<div>他の方法を考えないとなりません。</div>
<div> </div>
<div>(問題点)</div>
<div>1、ARCHIVE_LOGを各POSTGRESサーバーで有効にしていると通常のLOGが肥大化して実際に</div>
<div>リカバリーを行う時点でファイル転送に時間がかかりすぎる事。</div>
<div>(各バックエンドのPOSTGRESのCONFファイルにARCHIVE_COMMANDを有効にしています。)</div>
<div> </div>
<div>2、リカバリー時にマスターDBについてAUTO VACUUMを停止する必要があるようですが上手く出来る方法が</div>
<div>見つかっていない。</div>
<div> </div>
<div>3、ユーザーから四六時中アクセスがありリカバリー発生時にはPGPOOLを強制終了する必要がある。</div>
<div> </div>
<div> </div>
<div>そこで、リカバリーが必要になった時点で、</div>
<div> </div>
<div>1、強制的にPGPOOLを終了する。</div>
<div>2、続いてマスターのDBを終了させる。</div>
<div>3、マスターからリカバリーサーバーへデータ部分を転送する。</div>
<div>4、リカバリー及びマスターのPOSTGRESを立ち上げる。</div>
<div>5、PGPOOLを起動させる。</div>
<div> </div>
<div>大まかな手順はこの様に考えています。これをスクリプトにすると、</div>
<div> </div>
<div> </div>
<div>#! /bin/sh</div>
<div>if [ $# -ne 3 ]<br>then<br>    echo &quot;pgpool_recovery datadir remote_host remote_datadir&quot;<br>    exit 1<br>fi</div>
<div># Execute commands<br>PGCTL=/usr/local/pgsql/bin/pg_ctl<br>PGPOOL=/usr/local/bin/pgpool</div>
<div>PGPOOL_HOST=&quot;192.168.0.11&quot;<br>MASTER_HOST=&quot;192.168.0.11&quot;<br>MASTER_BASEDIR=$1<br>RECOVERY_HOST=$2<br>RECOVERY_BASEDIR=$3</div>
<div>#<br>ssh -T $PGPOOL_HOST $PGPOOL -m f stop &gt;/dev/null 1&gt; /dev/null &lt; /dev/null &amp;<br>ssh -T $RECOVERY_HOST $PGCTL stop -m fast &gt;/dev/null 1&gt; /dev/null &lt; /dev/null &amp;<br>ssh -T $MASTER_HOST $PGCTL stop -m fast &gt;/dev/null 1&gt; /dev/null &lt; /dev/null &amp;<br>
 <br>#<br>ssh -T $RECOVERY_HOST rm -rf $RECOVERY_BASEDIR.bk<br>ssh -T $RECOVERY_HOST mv -f  $RECOVERY_BASEDIR{,.bk}</div>
<div>#<br>rsync -aurz --delete --exclude=&#39;*.conf&#39; --exclude=&#39;*.sh&#39; -e ssh $MASTER_BASEDIR/ $RECOVERY_HOST:$RECOVERY_BASEDIR/ &amp;</div>
<div>#<br>ssh -T $RECOVERY_HOST rm -f  $RECOVERY_BASEDIR/postmaster.pid</div>
<div>#<br>ssh -T $RECOVERY_HOST $PGCTL -w -D $RECOVERY_BASEDIR start 2&gt;/dev/null 1&gt;/dev/null &lt; /dev/null &amp;</div>
<div>#<br>ssh -T $MASTER_HOST $PGCTL -w -D $MASTER_BASEDIR start 2&gt;/dev/null 1&gt;/dev/null &lt; /dev/null &amp;<br> <br>#<br>ssh -T $RECOVERY_HOST $PGPOOL -f /usr/local/etc/pgpool.conf -F /usr/local/etc/pcp.conf -n start 2&gt;&amp;1 | /usr/sbin/rotatelogs /tmp/pgpool.log 86400 &amp;</div>

<div>wait<br></div>
<div>単純に考えましたが、もし、PGPOOLがリカバリー時に1stのコマンドをマスターに実行させたときに、マスターがPGPOOLを停止させる事になりますが</div>
<div>ここで問題になることはあるでしょうか? もしくは、根本的に考えからが間違っていますか?</div>
<div> </div>
<div>すみません、ご教授お願いします。</div>
<div> </div>
<div> </div>
<div> </div>