[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] ";
}
}
pg_close($con);
exit;
--------------------------------------------------
なお,このスクリプトはあくまでも*イメージ*なので,動作は保証しません:-)
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内