[pgsql-jp: 35714] Re: psql を使わずにpgpoolのcurrent_backend を知る方法

Tatsuo Ishii t-ishii @ sra.co.jp
2005年 7月 8日 (金) 13:55:06 JST


石井です.

> マシンAにWebアプリとpgpool、マシンB,Cにpostgresを入れ、
> BとCをレプリケーションさせる形にしてテストしているのですが、
> Aから pgpoolが今どちらをmasterとしてみているか、調べるには
> どうすればよいでしょうか。
> 
> Aにpostgresが入っていれば、psql -p pgpoolのポート で、
> show status をして、current_backend_host を見ればOKと
> いうのは試してわかったのですが、 psql がない状態でも
> 方法がありますでしょうか。
> 
> pgpoolのソースを見ていて、psqlではなくてもコマンドとして
> "show status" は発行できるように見えますが、受け取り方がわからず、
> 、、
> 
> show status以外でもよいのですが、現在pgpoolがcurrentとみなして
> いるhost を取得する方法をご存知でしたら教えてください。
> 
> (ログを見ればfailover先も出るし・・・と思ったのですが、せっかく
> show statusのようなものがあるのに? とも思えたので。)


普通のSELECT文と同じように処理すればよいです.つまり,SELECTの代りに
"show pool_status"というSQL文を渡せば良いだけです.PHPで言えば,こんな
感じ.

--------------------------------------------------
$con = pg_connect("dbname=test port=9999");
if ($con == FALSE)
{
   exit(1);
}

$result = pg_query($con, "show pool_status");
$num = pg_numrows($result);

for ($i=0; $i < $num; $i++) {
  $r = pg_fetch_row($result, $i);

  for ($j=0; $j < count($r); $j++) {
    echo "$r[$j]&nbsp;";
  }
}
pg_close($con);
exit;
--------------------------------------------------

なお,このスクリプトはあくまでも*イメージ*なので,動作は保証しません:-)
--
Tatsuo Ishii



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