« 小山町台風被害チャリティイベント、大阪でも | メイン | 見事な勝利だった、アロンソ »

2010年9月12日

pgpool-II 3.0

カテゴリ:PostgreSQL

 一足先にPostgreSQL9.0に対応したpgpool-II 3.0がリリースされました。

 PostgreSQL9.0にはレプリケーション機能が実装されているのですが、単体では出来ることが限られているので、pgpool-IIの機能は重要ですよね。

 というわけで、以下、リリースノート。ML宛に来た、リリースノートですが全文はっつけちゃえ。


3.0(umiyameboshi) 2010/09/10

このバージョンは3.0系列の最初の版で、2.2系や2.3系からの「メジャーバー
ジョンアップ」にあたります。 PostgreSQL 9.0の新機能であるStreaming
Replication/Hot Standby構成に対応するなど、多くの機能が追加されると共
に、内部構造が整理されて見通しが良くなって保守性が向上しています。

マスタースレーブモード全般で多くの改善がなされています。

* 明示的なトランザクション内のSELECTが負荷分散できるようになりました
* 不必要なDBノードにparse/bindメッセージが送られなくなりロック競合が減りました
* 不必要な内部トランザクションの起動がなくなり、オーバヘッドが軽減しています
* 一時テーブルを意識せずに安全に使えるようになりました
* 書き込みを伴う関数呼び出しを行なうSELECTをマスター(primay)でのみ
実行するように制御できるようになりました

レプリケーションモードにおいても、書き込みを伴う関数呼び出しを行なう
SELECTを負荷分散するかどうかの制御できるようになるなどの改良が加えられ
ています。

新機能

* PostgreSQL 9.0の新機能であるStreaming Replication/Hot
Standby(SR+HS)構成に対応しました(Tatsuo, Kitagawa)。 pgpool-IIは
基本的にはmaster/slave modeとして動作しますが、その際に
"master_slve_sub_mode" という新しい設定項目に"stream"を設定する
ことにより、SR+HS構成に最適な動作をします。たとえば、更新クエリ
はPrimaryサーバにのみ送信し、SELECTはPrimaryとStandbyサーバに負
荷分散することが可能です。そのほか、Standbyサーバをオンラインリ
カバリで復旧したり、PrimaryとStandbyのレプリケーション同期を監視
し、遅れが大きいようならPrimaryにのみSELECTを送信させるようにす
ることも可能です。詳細はStreaming Replicationへの対応"をご覧下さ
い。

o オンラインリカバリがStreaming Replication対応で動作してい
るmaster/slaveモードに対応しました(Tatsuo)

o Streaming Replicationモード用の新しい設定項目
"delay_threshold" が追加され、レプリケーションの遅れが監視で
きるようになりました(Tatsuo)

o show pool_statusで、Streaming Replicationにおけるレプリケー
ションの遅延が確認できるようになりました(Tatsuo)

o Streaming Replicationにおけるレプリケーションの遅延のログ
を制御する新しい設定項目"log_standby_delay"が追加されました
(Tatsuo)

* pcp_proc_infoコマンドの出力結果に、PostgreSQLバックエンドプロセ
スのプロセスIDとフロントエンドからの接続があるかどうかが追加さ
れました(Tatsuo)

* 関数呼び出しを伴うSELECTを制御する設定項目white_function_listと
back_function_listが追加されました(Tatsuo) マスタースレーブモー
ドにおいて、システムカタログを検索するSELECTは、整合性を保つため
に常にマスター(primary)で実行されるようになりました(Tatsuo)

* マスタースレーブモードにおいて、一時テーブルを検索するSELECTは、
整合性を保つために常にマスター(primary)で実行されるようになりま
した(Tatsuo)

* マスタスレーブモードで、明示的なトランザクション内で実行されない
SQLコマンドにおいて、自動的にトランザクションを開始することを止
めました。これは不必要でした。これによって、パフォーマンスが向上
しています(Tatsuo)

* マスタスレーブモードで、明示的なトランザクション内で実行される
SELECTコマンドが負荷分散できるようになりました(Tatsuo, Kitagawa)

* マスタスレーブモードで、必要なDBノードにのみコマンドが送られるよ
うになりました。これにより、たとえばパースコマンドが不必要なDBノー
ドにおいてもロックを取ってしまうようなことがなくなりました
(Tatsuo, Kitagawa)

* pgpoolの起動時に、ステータスファイルを無視するオプションが追加さ
れました(Tatsuo)

* PostgreSQL 9.0のVACUUMの新しい書式をpgpool-IIのパーサがサポート
しました(Tatsuo)

* フェイルオーバ/フェイルバックコマンドで、"%H"という特殊変数が利
用できるようになりました。これは、新しいマスターノードのホスト名
を表します(Tatsuo)

* failover_if_affected_tuples_mismatch という設定項目が追加されま
した(Tatsuo) 従来、レプリケーションモードでUPDATE/DELETEの結果行
数が異なると、トランザクションをアボートしてセッションを強制切断
していました。 failover_if_affected_tuples_mismatch を trueに設
定すると、この現象が起きたときに、不一致のあったDBノードを切り放
して縮退運転に入るようになります。

* レプリケーションモードでDBノード間でUPDATE/DELETEの結果行数の不
一致が検出された際に、各DBノードにおける結果行数がログに記録され
るようになりました(Tatsuo)

* レプリケーションモードとマスタスレーブモードで、md5認証がサポー
トされました(Tatsuo)

* オンラインリカバリで、強制的にフロントエンドへの接続を切断して直
ちにセカンドステージに入ることができるようになりました。そのため
には、client_idle_limit_in_recovery に -1 を設定します(Tatsuo)

* RAWモードにおいて、DBノードが1個だけしか存在しない状態でDBがエラー
を起したためにDBノードを切り放したあとでDBノードが回復した場合に、
pgpool-IIを再起動することになしにDBノードを利用できるようになり
ました(Tatsuo)

* pcpコマンドにおいて、ロングオプションがサポートされました
(Guillaume Lelarge)

* debug_level という設定項目が追加され、pgpool.confの再読み込みに
よってデバッグメッセージの出力をオン/オフできるようになりました
(Tatsuo)

* pgpool.confで、postgresql.confと同じ真偽値表現が利用できるように
なりました。従来は、true/false, 1/0しか使えませんでした
(Kitagawa)

* オンラインリカバリのセカンドステージをより安全に実行するために、
C言語関数pgpool_switch_xlogを追加しました(Kitagawa)

* 異なるスキーマに同じ名前のテーブルが存在する場合に起きる不具合を
回避するために、C言語関数pgpool_regclassを追加しました(Tatsuo)

バグ修正

* 型が時刻データ以外の列の場合、デフォルト値にnow()が含まれていて
も書き換えを行なわないようにしました。今までは無条件に書き換えを
行なっていたため、書き換えの結果、INSERT文などがエラーになってい
ました(Tatsuo)

* タイムスタンプの書き換え処理対象となるテーブルのスキーマが無視さ
れないようにしました(Tatsuo)

* pcpコマンドのタイムアウトの扱いにおけるバグが修正されました
(Tatsuo)

* SSLが有効な状態で、大量のデータ通信が起るとハングする問題が修正
されました(Tatsuo)

* DBノードが1個だけしか存在しない状態でDBがエラーを起したた際に、
間違ったDBノードがフェイルオーバするバグを修正しました(Tatsuo)

* オンラインリカバリ時のpostmasterの起動チェックにおけるバグを修正
しました。今まではpostmasterへの最初の接続が失敗すると、接続を無限
に繰り返すようになっていました(Tatsuo)





投稿者 ymkx : 2010年9月12日 08:22 |