[pgpool-general-jp: 1004] Re: pgpool-recovery、pgpool-regclassとpgpool-walrecrunningの導入について
Toshihiro Kitagawa
kitagawa @ sraoss.co.jp
2011年 9月 30日 (金) 11:20:23 JST
お世話になっております。
北川です。
On Thu, 29 Sep 2011 12:25:52 +0900
山下大介 <yamashita @ cyberstar.co.jp> wrote:
> 毎々、お世話になっております。
> 山下と申します。
>
> pgpool-II-3.x系の導入で理解がごっちゃになってきたので、ご教授頂けないでしょうか?
>
> 以下のような構成(SR/HSを想定)で、poolについては、コネクションプールと、バランシングのみの動作をさせたい場合、
> pgpool-recovery、pgpool-regclassとpgpool-walrecrunningはどこまで導入させる必要がありますでしょうか?
pgpool-walrecrunning は、SR/HS 構成においてプライマリサーバを見つける際
に使用される関数で、pgpool-II 3.0.x では必須、3.1.x では導入不要です。
pgpool-regclass は、他のスキーマに同じ名前のデータベースオブジェクトが
存在しなければ導入不要です。つまり、public スキーマしか使用していない
ような場合はいりませんが、一応入れておくことを推奨しています。
pgpool-recovery は、オンラインリカバリ機能を使用しなければ導入不要です。
> pgpool-II -------- + --------- PostgreSQL0
> |
> --------- PostgreSQL1
>
> pgpool-II側にpgpool-recovery.so, pgpool-regclass.so、pgpool-walrecrunning.so
> 各DBには、各soと実行した関数を作成という理解を現在しているのですが、異なっていますでしょうか?
pgpool-II 側には不要です。各 DB についてはご認識のとおりです。
pgpool-II は SELECT 文で各関数を実行するので、pgpool-II のホストから
psql で接続し、以下のように関数が実行できれば問題ありません。
- pgpool-recovery(実行できるかどうかの確認のみ)
template1=# SELECT pgpool_recovery('test', 'test', 'test');
ERROR: pgpool_recovery failed
template1=# SELECT pgpool_remote_start('test', 'test');
ERROR: pgpool_remote_start failed
- pgpool-regclass
アプリが使用するDB=> SELECT pgpool_regclass('pg_class');
pgpool_regclass
-----------------
xxxx
(1 row)
- pgpool-walrecrunning
postgres=> SELECT pgpool_walrecrunning();
pgpool_walrecrunning
----------------------
f または t
(1 row)
オンラインリカバリを使用する場合は、pgpool-recovery に含まれる
pgpool_recovery() と pgpool_remote_start() が、それぞれ
recovery_1st/2nd_stage_command に指定したスクリプトと pgpool_remote_start
スクリプトを実行するので、各データベースクラスタディレクトリにそれらを
配置しておいてください。
以上、よろしくお願いいたします。
--
Toshihiro Kitagawa
SRA OSS, Inc. Japan
pgpool-general-jp メーリングリストの案内