[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 メーリングリストの案内