[pgpool-general-jp: 44] Re: JDBCとshow pool_status

Tatsuo Ishii ishii @ sraoss.co.jp
2006年 12月 2日 (土) 21:33:36 JST


石井です.

> > JDBC 8.1 は拡張問い合わせプロトコルというものを使っていて、pgpool-II
> > では今のところ制限事項となっています。
> > 
> > pgpool 3.1.1 ですぐに修正できるかと今試しに改造してみたのですが、こち
> > らも別の問題で修正が大変そうなので、ちょっと今すぐには厳しそうです。
> > 
> 
> PostgresのJDBCサイトを覗いてみて、拡張 のところを読んだのですが、
> 今ひとつわかりませんでした。

pgpool(-II)では,クライアントから送られてきたSQLコマンドは通常はそのま
まPostgreSQLに送ります.しかし,show pool_statusのようなpgpool特有のコ
マンドは,PostgreSQLに送るのではなく,pgpoolの中で処理し,結果をクライ
アントに返す仕組みになっています.

拡張問い合わせは,

1) SQLコマンドをprepareする
2) 1)をexecuteする

という2つのフェーズに分かれています.show pool_statusのようなコマンド
は,1)2)の処理ができない(PostgreSQLに送っても,そんなコマンド知らない
と言われてしまう)ので,そこが難しいところなのです.1)では,あたかも
prepareできたような振りをし,2)ではshow pool_statusであったことを覚え
ておいて,show pool_statusの結果を返す,というややこしい処理が必要にな
ります.このあたりが「厳しい」理由です.

> 今現在、Pgpoolで、ステータス状態を判断して、同期がとれない場合、
> メールを送信するPGを稼働させているのですが、
> shellスクリプトから、
> 
> psql から show_status の出力結果を ファイル出力
> PGで、ファイルを読み込んで、状態確認
> 同期がとれていない場合は、メール送信
> 
> という感じになってまして、何とか直接読めればと考えていました。
> 
> また、同期がとれているかの簡単なチェック項目(ステータス)が
> show pool_status で出力されたら、すごく便利だと思います。
> 
> 例) replicaton_status   TRUE  or FALSE
> 
> といった具合です。
>
> また、pgpool自体に、同期がとれない場合のメール送信機能があれば、
> 商用に匹敵すると思いました。

これは是非実装したいと思っています.具体的には,フェイルオーバーや縮退
が発生したら,指定コマンドを起動するという機能です.このコマンドにメー
ルコマンドの起動を仕込んでおけば,お望みのことができるようになるでしょ
う.

> 7.4の時と違い、最近は、文字コードもデフォルトでUTF-8、
> JDBCインターフェースを利用した接続も増加していると思います。
> 
> どうも、PostgresのJDBCドライバーは、他のJDBCドライバーと違って
> ASPサーバーなどのコンテナ設定でも、Postgresだけ、一昔前の接続例しか
> ない事が多く、JCA に対応していないのでは? と感じるところがあります。
> ドライバー自体安定しているので、余計に残念です。
> 
> ご苦労お察しします。
> 
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
> 


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