pgpool-II 3.2 の新機能 (1) 概要
SRA OSS, Inc. 日本支社
石井 達夫
はじめに
2012 年 8 月にリリースされた pgpool-II 3.2 では、 DBへの検索リクエストを実効的に高速化するオンメモリクエリキャッシュ、 可用性を高めるウォッチドッグ機能などが搭載され、より PostgreSQL を高速、安全に利用できるようになりました。 本記事では、まず pgpool-II 3.2 の概要を説明します。オンメモリクエリキャッシュとウォッチドッグに関しては、 別ページで詳細に解説します。
pgpool-IIとは
pgpool-II についてまだあまりご存知のない方のために、pgpool-II とは何かという事を簡単にご紹介します。 すでに pgpool-II についてよくご存じの方は、次の章までとばして頂いて構いません。
pgpool-II は、PostgreSQL のクライアントアプリケーションと、(複数の)PostgreSQL の間に割り込んで入る proxy のような形で利用するミドルウェアです。 直接 PostgreSQL を使うのではなく、pgpool-II を経由することによって、以下のような機能が利用できるようになります。
- DB との接続オーバヘッドを軽減する コネクションプーリング
- 検索処理を複数の PostgreSQL で分担して性能を向上する 負荷分散機能
- 障害の発生した PostgreSQL を切り離して運用を継続する フェイルオーバ機能
- 複数の PostgreSQL の間で DB の複製を作る レプリケーション機能
他にも多くの機能が pgpool-II にはあります。 詳細は、pgpool-II の公式ドキュメントやチュートリアル、 そして Let's Postgres の pgpool-II 関連の記事 を ご覧いただくと良いでしょう。
pgpool-II は 2003 年から開発が始まり、すでに多くの企業で業務に使われています (JTB の事例)。 pgpool-IIは オープンソースプロジェクトであり、 どなたでも無料で利用できます。 必要ならば、国内外の企業から商用サポートを受けることもできます。
pgpool-II 3.2の新機能
pgpool-II 3.2 の主な新機能は、オンメモリクエリキャッシュと、ウォッチドッグです。
オンメモリクエリキャッシュは、SELECT 文の検索結果をキャッシュ領域に保存しておき、 次回全く同じ SELECT 文が来たら、PostgreSQL にアクセスすることなく直接結果を返します。 キャッシュ領域はpgpool-IIが動くサーバ上の共有メモリか memcached に置かれるので、 (検索リクエストへの)応答速度が劇的に高速化します。
ウォッチドッグは、複数の pgpool-II を使って pgpool-II の可用性を高める機能です。 主系の pgpool-II がダウンすると、待機系の pgpool-II がそれを検知して主系に取って代わり、運用を継続します。 従来は、pgpool-HA というパッケージが別に必要でしたが、pgpool-II 3.2 では pgoool-II 自身が この機能を持つようになったため設定が楽になっただけでなく、複数の pgpool-II を同時に利用するいわゆる 「マルチマスタ」的な使い方もできるようになりました。
オンメモリクエリキャッシュ と、 ウオッチドッグ については別記事で詳しく紹介します。
その他の主な新機能
- ヘルスチェックで一度エラーになっても直ちにフェイルオーバするのではなく、 リトライすることができるようになりました。 これにより、一時的なネットワーク障害によるフェイルオーバを避けることができます。 リトライ回数の上限とリトライ間隔も設定によって変えられます。
- ヘルスチェックを行うユーザとパスワードを指定できるようになりました。
- クエリログの設定を有効にしていなくても、クエリの解析に失敗した時に クライアントの IP アドレスとポート番号をログするようになりました。 これにより、問題のあるクエリを発行したアプリケーションの特定が容易になります。
(2012 年 9 月 3 日掲載)