[pgsql-jp: 36566] Re: pgpool レプリケーション時の pg_start_backup() について

Tatsuo Ishii ishii @ sraoss.co.jp
2005年 12月 16日 (金) 19:49:55 JST


石井です。

> > > pgpoolの仕様をよく理解していないのですが、
> > > リカバリするときのことを考えると、2台のどちらが壊れるかわからないので
> > > 1つのラベル名で2台のマシンにpgpool経由で(1回のタイミングで)pg_start_backup()を
> > > 発行し、
> > > それぞれバックアップを取った方が
> > > 管理が楽なのではないでしょうか。
> > 
> > なるほどです。
> > この方法であれば、pgpool の同期等をあまり考えずにバックアップ
> > が取れますし、これでやってみます。
> 
> この方法で試みたのですが、私の環境では pgpool の load_balance_mode
> が有効になっているため、select 文による pg_start_backup() のコール
> が、片側のデータベースでしか実行されないために、pg_stop_backup() 
> した際に、タイミングによっては以下のエラーになる場合がありました。
> 
>   ERROR:  a backup is not in progress
> 
> # あたり前と言えばあたり前なのですが…

たしかに、load_balance_modeが有効ならば、pgpoolはSELECT文をload
balanceしてしまいますが、実はpgpoolがSELECTかどうか判定する方法は非常
に単純な物でして、SQL文の先頭が正確に"SELECT"になっているかどうかだけ
なのです(もちろん、大文字小文字の区別は無視されます)。

逆に言うと、

o 行の先頭にスペースを入れる

o 行の先頭に "/*NO LOAD BALANCE*/"のようなコメントを入れる

ようなことで、容易にload balanceしなくなります。お試しください。
--
Tatsuo Ishii
SRA OSS, Inc. 



pgsql-jp メーリングリストの案内