[pgpool-general-jp: 994] pgpool-II 3.1リリース
Toshihiro Kitagawa
kitagawa @ sraoss.co.jp
2011年 9月 8日 (木) 21:50:40 JST
pgpool-IIユーザの皆様
pgpool Development Groupからのお知らせです。
pgpool-II 3.1をリリースしましたのでお知らせ致します。
pgpool-II 3.1では、多くの改良と機能追加が行なわれています。
pgpool-II 3.1は、以前のバージョンの pgpool-II と互換性ができるだけ保
たれるように作られていますが、互換性のない変更もあります。詳細は、
マニュアルをご覧ください。
ダウンロードは以下から可能です。
http://pgfoundry.org/frs/download.php/3114/pgpool-II-3.1.tar.gz
以下、リリースノートを添付します。
----------------------------------------------------------------------
3.1.0 (hatsuiboshi) 2011/09/08
概要
====
このバージョンは3.1系列の最初の版で、3.0系からの「メジャーバージョン
アップ」にあたります。
互換性のない変更
================
- insert_lockのロック方法を変更しました。以前のinsert_lockは、シーケン
ステーブルに対して行ロックを行いましたが、現在は、
pgpool_catalog.insert_lockテーブルに対して行ロックを行います。その理
由は、シーケンステーブルに対するロックが内部エラーを引き起こすため、
PostgreSQLのコア開発者がそれを許可しないことを決定したためです。した
がって、pgpool-II経由でアクセスするすべてのデータベースにinsert_lock
テーブルをあらかじめ作成しておく必要があります。もし、insert_lockテ
ーブルが存在しない場合は、挿入対象のテーブルに対してロックを行います。
これは、pgpool-II 2.2と2.3シリーズのinsert_lockと同じ動作です。また、
過去のバージョンと互換性のあるinsert_lockを使用したい場合は、
configureオプション(--enable-sequence-lock,--enable-table-lock)で設定
できます(Kitagawa)
- backend_socket_dirパラメータを廃止しました。その代わりに、
backend_hostnameが'/'で始まるならば、それをUNIXドメインへのパスとみな
します。backend_hostnameが空ならば、デフォルトのUNIXドメインパス(/tmp)
が使われます。これは、libpqインタフェースの規約に従います。パッチは
Jehan-Guillaume (ioguix) de Rorthaisさんから頂きました。
- フェイルオーバー時にpgpool_walrecrunning()を使用せず、プライマリノード
への昇格が完了するまで待つようになりました。関数を使用しない理由はプラ
イマリノードを確実に見つけることができないためです。しかし、この修正に
はプライマリノードが現れないときにrecovery_timeoutの間pgpool-IIが待っ
てしまう問題がまだ残っています(Kitagawa)
- PostgreSQL DBノード情報を出力するpool_nodesに「ノードID」を追加しました
(Jean-Paul Argudo)
- シーケンス関数(nextval, setval)の扱いをblack/white_function_listの設定
に完全に従うように変更しました。以前、それらは常に書き込み関数として扱
われていました(Kitagawa)
新機能
======
- syslogに対応しました。パッチはGilles Daroldさんから頂き、Guillaume
Lelargeさんがレビューと編集をしました。
- PostgreSQL 9.0で導入されたapplication_nameに対応しました。コネクショ
ンが再利用されたときに、スタートアップパケットのapplication_nameをバ
ックエンドへ送信し、パラメータステータスをフロントエンドに返します
(Tatsuo)
- pgpool-II内部で使用するシステムカタログキャッシュの有効時間を、秒単位
で指定できる設定項目relcache_expireが追加されました。これにより、
ALTER TABLEによってテーブル定義が変更された際に、もはや有効でない結果
を利用してしまうリスクが軽減されます。(Tatsuo)
- follow_master_commandパラメータを追加しました。このパラメータには、マ
スタースレーブモードのストリーミングレプリケーション構成においてマス
タノードがフェイルオーバーした後に実行されるコマンドを指定します。パ
ッチはGilles Daroldさんから頂きました。
- pcp_promote_nodeコマンドを追加しました。このコマンドはpgpool-IIに対し
て新しいマスタノードへの昇格を行います。これは、マスタースレーブモー
ドのストリーミングレプリケーション構成のみで使用できます。パッチは
Gilles Daroldさんから頂きました。
- pcp_pool_statusコマンドを追加しました。また、対応するC APIも追加され
ています。パッチはJehan-Guillaume (ioguix) de Rorthaisさんから頂きま
した。
- バックエンドごとのパラメータ"backend_flag"を追加しました。これは、バ
ックエンドごとの動作を制御します。今は"ALLOW_TO_FAILOVER"または
"DISALLOW_TO_FAILOVER"が指定できます(Tatsuo)
- health_check_passwordパラメータを追加しました(Nicolas Thauvin)
- sr_check_period、sr_check_user、sr_check_passwordパラメータを追加しま
した。これらは、ストリーミングレプリケーションの遅延チェックとプライ
マリノードの決定に使用されます(Tatsuo)
- pg_md5コマンドに--username(または-u)オプションを追加しました。これは、
UNIXアカウントを持たないユーザの管理を可能にします。日本語ドキュメン
トはTatsuo Ishiiさんが修正しました(Nicolas Thauvin)
- pgpool_adm関数をpgpool_adm/に追加しました。これらは、pcpコマンドのよ
うに動作するC言語で書かれたユーザ定義関数です
(Jehan-Guillaume (ioguix) de Rorthais)
- 簡体字中国語版のドキュメントを追加しました(Huang Jian, Sun Peng)
- 関数をアンインストールするためのSQLファイルをsql/に追加しました
(Nicolas Thauvin)
- マスタースレーブモードにおいて、unloggedテーブルに対するSELECTは、常
にマスター(primary)で実行されるようになりました(Kitagawa)
バグ修正
========
- スタンバイノードでJDBCドライバのカーソルが使用できないバグを修正しま
した。この修正によって、マスタースレーブモードではトランザクションコ
マンドがすべてのノードに送られるようになります(Kitagawa)
- 空のクエリの処理に関するバグを修正しました。空のクエリはSELECTクエリ
と同じ扱いになります。この修正は、空のクエリのあとのロードバランスを
可能にします(Kitagawa)
- カラム定義が"DEFAULT nextval(('"x_seq"'::text)::regclass)"のようにな
っていてもinsert_lockが正しく動作するように修正しました(Kitagawa)
- フェイルオーバー中はエラーメッセージを出力するようにpcp_attach_node
コマンドを修正しました(Kitagawa)
- 拡張問い合わせプロトコルでpgpool-IIがクエリを解析できないときに出力さ
れるログメッセージがクエリを表示するよう修正しました(Kitagawa)
- pgpool-IIマニュアルのbackend_weightに関する説明を修正しました。それは、
pgpool.confの再読み込みで変更できます(Tatsuo)
- 英語のチュートリアルドキュメント内の表現の改善と修正を行いました。修
正の提案はHuang Jianさんによるものです(Tatsuo)
- rawモードでノードを復帰させたときにノードの状態が更新されないバグを修
正しました(Guillaume Lelarge)
- ストリーミングレプリケーションモードにおけるレプリケーション遅延の計
算が間違っていたのを修正しました(Tatsuo)
- フェイルオーバーのログメッセージにおける誤った関数名
"notice_backend_error"を、正しいもの"degenerate_backend_set"に置き換
えました(Tatsuo)
- pgpool.conf解析後の不要なログ出力を削除しました(Tatsuo)
- バックエンドを新規追加した後に起こり得るpgpool/worker子プロセスのクラ
ッシュを修正しました。修正はGurjeet Singhさんの提案によるものです
(Tatsuo)
- FOR SHARE/UPDATE句のあるサブクエリを含むSELECTがスレーブ(standby)に送
られるバグを修正しました(Tatsuo)
- PREPARE文でデフォルト値のタイムスタンプ書き換えに失敗するバグを修正し
ました。これは以前は動作していましたが、3.0で動作しなくなっていました
(Kitagawa)
- getopt_long()がない環境でpcpコマンドのコンパイルが失敗するのを修正し
ました(Tatsuo)
- rawモード、enable_hbaが無効、バックエンドが2台以上の場合にpgpool子プ
ロセスがクラッシュするのを修正しました(Kitagawa)
- メモリリークをいくつか修正しました(Kitagawa)
改良
====
- ストリーミングレプリケーション構成でのオンラインリカバリにおいて、リ
カバリ終了時に子プロセスを再起動しないようにしました。そのため、既存
のセッションはオンラインリカバリ中も継続することができます(Tatsuo)
- ストリーミングレプリケーションモードにおいて、pcp_attache_nodeが既存
のセッションを切断しなくなりました。ほかのモードでは依然としてセッシ
ョンが切断されます(Tatsuo)。
- PostgreSQL 9.0のパーサを移植しました。これによりPostgreSQL 9.0で新し
く導入された暗黙のインデックス名を使用したCREATE INDEXが実行できるよ
うになりました。パッチは石田さんから頂きました。
- black_function_listとwhite_function_listパラメータに正規表現が使える
ようになりました。パッチはGilles Daroldさんから頂き、Guillaume Lelarge
さんがレビューしました。
- 読みやすいようにpgpool.confのサンプルファイルを再構成しました
(Guillaume Lelarge)
- pgpool-IIマニュアルのすべてのパラメータに?a name="..."?タグを追加し
ました(Haruka Takatsuka)
- pgpool-IIマニュアルのストリーミングレプリケーションにおけるオンライ
ンリカバリの説明を改善しました(Tatsuo)
- ストリーミングレプリケーションモードにおけるレプリケーション遅延をチ
ェックするための関数を変更しました。現在、
pgpoolはpg_last_xlog_receive_location()の代わりに
pg_last_xlog_replay_location()を使用します。修正はAnton Yuzhaninovさ
んの提案によるものです(Tatsuo)
- カラムのデフォルト値に任意の式を指定してもタイムスタンプ書き換えが動
作するようにしました。以前は、now()が含まれているものを検知すると、
単純にそれをnow()で置き換えてました。これは、デフォルト値の誤った書
き換えを引き起こします。例えば、timezone('utc'::text, now())です。し
かし、これは簡易プロトコルのみへの適用であることに注意してください。
拡張プロトコル(例えばJava, PHP PDO)または、SQLの"PREPARE"にはまだ適
用されていません(Tatsuo)
- レプリケーション遅延のチェックに失敗したときに出力されるエラーメッセ
ージを改良しました(Nicolas Thauvin)
- エラーメッセージ"do_md5: read_password_packet failed"をデバッグレベル
にしました(Kitagawa)
- pgpool-regclass()をPostgreSQL 9.1でコンパイルできるようにしました
(Tatsuo)
- 英語版と日本語版のpgpool-IIマニュアルを更新、同期しました(Tatsuo)
pgpool-general-jp メーリングリストの案内