[pgpool-general-jp: 1185] pgpool-II 3.3.0 and pgpoolAdmin 3.3.0 officially released

Yugo Nagata nagata @ sraoss.co.jp
2013年 7月 30日 (火) 18:39:54 JST


長田です。

pgpool-II 3.3.0 and pgpoolAdmin 3.3.0 をリリースしました。

以下よりダウンロードすることができます。

(pgpool-II)    http://www.pgpool.net/download.php?f=pgpool-II-3.3.0.tar.gz
(pgpoolAdmin)  http://www.pgpool.net/download.php?f=pgpoolAdmin-3.3.0.tar.gz  

3.3 の主な新機能は以下の通りです。

    - watchdog の改善
        -- ハートビート信号を用いた新しい死活監視方法
        -- フェイルオーバ/ファイルバックスクリプトの排他実行
        -- watchdog 間通信に認証機能を追加
        -- watchdog ステータスを取得する PCP コマンド
        -- etc. 

    - その他
        -- PostgreSQL 9.2 raw パーサのインポート
        -- CREATE EXTENSION を用いた pgpool 関数のインストール
        -- テスト環境構築ツール pgpool_setup
        -- レグレッションテストスィート

マニュアル:
http://www.pgpool.net/docs/latest/pgpool-ja.html
リリースノート:
http://www.pgpool.net/docs/latest/pgpool-ja.html#release3.3.0
http://www.pgpool.net/docs/latest/NEWS.txt

===============================================================================
pgpool-II 3.3.0
===============================================================================

このバージョンは 3.3 系列の最初の版で、3.2 系からの「メジャーバージョンアップ」
にあたります。

* 互換性のない変更

以下は全て watchdog に関する変更です。詳細は以下の新機能の項目を 参照してください。

 - デフォルトの監視方法がクエリモードからハートビートモードに変更されました。
 - failover/failback コマンドが1つの pgpool-II でのみ実行されるようになりました。
 - デフォルトで、アクティブ pgpool-II への昇格時には共有メモリ内のクエリキャッシュを
   全て削除するようになりました。
 - クエリモードで他の pgpool-II を監視する際に用いられるデータベース名、ユーザ名、
   パスワードは 専用のパラメータで指定されるようになりました。 以前は template1, 
   recovery_user, recovery_password が使われていました。

* 新機能

** watchdog

 - UDP のパケットのハートビート信号を用いた新しい監視方法が追加されました。
  (Yugo Nagata)

   「ハートビート」モードと「クエリ」モードのから監視方法を選ぶことができます。

  -- ハートビートモード

     ハートビートモードは今回新しく追加された方法です。
     このモードでは、watchdog はハートビート信号を用いて 他の pgpool-II プロセス
     の死活監視を行います。 watchdog は、他の pgpool-II の watchdog より定期的に
     送られるハートビート信号を受け取り、 これが一定期間以上途切れた場合にはその 
     pgpool-II プロセスに障害が発生したと判断します。

     冗長性を高めるため、複数のネットワーク用いたハートビート交換が可能です。
     デフォルトではこのモードで動作し、これが推奨設定です。
  
  -- クエリモード

     クエリモードでは従来と同じ動作になります。 このモードではwatchdog は 
     pgpool-II のプロセスではなく「サービス」の応答を監視します。 このモードでは、
     監視対象の pgpool-II にクエリを発行しその応答をチェックします。

     この方法では他の pgpool-II から接続を受ける必要があるため、num_init_children 
     が十分大きくない場合には 監視が失敗する場合があることに注意してください。

     これは非推奨の監視方法であり、下位互換のために残されています。

    以下のパラメータが追加されました。
        wd_lifecheck_method
        wd_heartbeat_port
        wd_heartbeat_keepalive
        wd_heartbeat_deadtime
        heartbeat_destinationX
        heartbeat_destination_portX
        heartbeat_deviceX
    
  -- filover/failback コマンドを排他的に実行するインターロック機能が追加されました。
    (Yugo Nagata)

    watchdog で複数の pgpool-II を連携した場合、failover/failback コマンド 
   (failover_command, failback_command, follow_master_command)は1つの pgpool-II 
    でのみ実行されます。

    以前は、これらのコマンドは全ての pgpool-II で実行されていました。

  -- watchdog パケット通信に認証機構が追加されました。(Yugo Nagata)

    間違った認証キーを持つ pgpool-II から送られた watchdog パケットは拒絶されます。
   (ハートビート信号を含む) 全ての pgpool-II は同じキーを pgpool.conf の 
    wdauthkey パラメータに持っている必要があります。 間違った認証キーを持っていると、
    スタートアップパケットも他の pgpool-II から拒絶されるため、 起動することもでき
    ません。
    
  -- clear_memqcache_on_escalation パラメータを 追加しました。(Yugo Nagata)

    これが on の場合は、pgpool-II がアクティブに昇格した時に、共有メモリ上のメモリ
    キャッシュが全てクリアされます。

    これは、新しいアクティブの pgpool-II が以前のアクティブと矛盾する 古いキャッシ
    ュを使わないようにするためです。

  -- wd_escalation_command パラメータを追加しました. (Yugo Nagata)

    このパラメータに指定されたコマンドは、pgpool-II がアクティブに昇格した時に実行
    されます。 実行のタイミングは、仮想 IP が立ち上がった直後です。

  -- wd_lifeccheck_dbname, wd_lifecheck_user, wd_lifecheck_password パラメータを追加
    しました。(Yugo Nagata)

    これらのパラメータは、クエリモードで監視の際に使用するデータベース名、ユーザ名、
    パスワードを提要します。 以前はそれぞれ templat1, recovery_user, 
    recovery_password が使われていました。

  -- delegate_ip オプションが空の場合には、 仮想 IP の立ち上げ/切り替えを行わない
    ようになりました。(Yugo Nagata)

    これにより、各 pgpool-II に固定 IP を用いてアクセスするマルチマスタ的運用で、 
    仮想 IP を用意する必要がなくなりました。
    
  -- pcp_watchdog_info コマンドを追加しました。(Yugo Nagata)

    これは watchdog ステータスを取得する pcp コマンドです。

** その他

  -- PostgreSQL 9.2 の raw パーサを取り入れました。 (Nozomi Anzai, Tatsuo Ishii)

  -- pgpool_setup を追加しました。(Tatsuo Ishii)

    これはカレントディレクトリ下 pgpool-II と PostgreSQL のテスト環境を構築する
    ツールです。

  -- pgpool-recovery, pgpool-regclass を CREATE EXTENSION を使ってインストール
     できるようになりました。(Tatsuo Ishii)

    古いインストール方法も継続して利用可能です。

  -- pgpool_pgctl() 関数 を追加しました。(Nozomi Anzai)

    これを用いると、SQL から pg_ctl stop/restart/reload の実行が可能です。
   (ただし、start は除きます。)

 -- pgpool-II と pgpoolAdmin の RPM をインストールするシェルスクリプトを追加しました。
   (Nozomi Anzai, Yugo Nagata)

 -- 新しいパラメータ search_primary_node_timeout を追加しました。 
   (Muhammad Usama, Tatsuo Ishii)

    このパラメータはファイルオーバ時にプライマリノードを探す最大の秒数を指定します。 

 -- オンメモリクエリキャッシュと watchdog の 中国語のチュートリアルを追加しました。
   (Bambo Huang)
    
 -- レグレッションテストを作成しました。(Tatsuo Ishii)

* バグ修正

  -- オンラインリカバリ時のフェイルバックの完了待機でタイムアウト処理をするよう
     にしました。(Tatsuo Ishii)

  -- ストリームレプリケーションモードでの follow_master_command 実行時に、%H に
     新しいプライマリノードが正しく割り当てられないバグを修正しました。
     (Tatsuo Ishii)

  -- 他の pgpool-II からダウン通知を受け取った pgpool-II が既にアクティブである
     場合には昇格処理を実行しないよう修正しました。(Yugo Nagata)
    
  -- watchdog ソケット作成時に、connect() の前に select() を実行していたのを修正
     しました。(Yugo Nagata)

     未接続のソケットで select() を実行したときの処理は未定義で、プラットフォームで
     異なります。 Linux では 2 を返し、結果としては無害です。 しかし、Solaris では 
     0 を返し、これはタイムアウトと区別がつかないため、 watchdog が正しく動いていま
     せんでした。
    
  -- pgpool_regclass がインストールされていない場合に生じるエラーを修正しました。
     (Tatsuo Ishii)
   
  -- PostgreSQL がエラーを返したときに do_query() がハングしないよう修正しました。
    (Tatsuo Ishii)

  -- watchdog を有効にしたときに、フェイルオーバの最中に起こりうるデッドロックを
     修正しました。(Yugo Nagata)

  -- COMMIT 時エラーに不要なバックエンド切り離しを行わないようにしました。
     (Tatsuo Ishii)
 
  -- 拡張プロトコルの際に do_query で発生しうるハングアップを修正しました。
     (Tatsuo Ishii)

  -- トランザクション内の DML で、クエリキャッシュの無効化が失敗する場合があるのを
     修正しました。(Tatsuo Ishii)

  -- pgpool_regclass を pg_catalog スキーマに登録するよう修正しました。
    (Tatsuo Ishii)

    これは postgres_fdw のような、スキーマ検索パスが pg_catalog に限定されている
    クライアントに 対応するために必要です。

  --  "pgpool -m f stop" で起こるハングアップを修正しました。(Tatsuo Ishii)

  -- pg_md5 コマンドで起こりうるクラッシュを修正しました。(Muhammad Usama)
    
  -- オンメモリクエリキャッシュ有効時に発生するセグメンテーション違反が修正され
     ました。(Tatsuo Ishii)
    
  -- スタートアップパケットに PostgreSQL ユーザ情報が含まれていなかった場合に発生
     する子プロセスの セグメンテーション違反を修正しました。(Yugo Nagata)

  -- オンメモリクエリを有効にした時の拡張クエリの処理におけるメモリ割り当てロジック
     を修正しました。(Tatsuo Ishii)

  -- pcp_recovery_node コマンドで、 バックエンドノード番号をチェックするように修正
    しました。(Yugo Nagata)

    不正な値が使用された場合、リカバリで実行されるスクリプトの引数に空の値が渡され
    ており、誤動作の原因となっていました。 特にベースバックアップを行うスクリプトで、
    rsync が関係のないファイルを削除してしまうことがありました。
    
  -- バックエンドエラー検出時に発生することがあるメインプロセスの セグメンテーション
     違反を修正しました。(Tatsuo Ishii)

  -- child_life_time 使用時に発生しうる ヘルスチェックのバグを修正しました。
     (Tatsuo Ishii)

  -- レプリケーションモードにおけるプリペアド文のパース処理を修正しました。 
     (Tatsuo Ishii)

     レプリケーションモードで SELECT 以外のクエリをパースする際には、ノード間の
     一貫性保持のため自動的にトランザクションが開始されますが、トランザクション
     を閉じる処理が行われていませんでした。そのため、実際に誤っているクエリだけ 
     ではなく、その次にパース処理されたクエリもアボートされていました。 

* 改良

  -- man ページに -D オプションの記述を追加しました。(Tatsuo Ishii)

  -- watchdog のプロセスが異常終了した場合に、これが自動で再起動されるよう修正
     しました。(Yugo Nagata)

  -- watchdog 有効時に ping コマンドを実行する関数にエラーチェックを追加しました。
     (Tatsuo Ishii)

  -- sprintf strncpy などの安全でない関数を、より安全な anprintf, strlcpy に置き換
     えました。(Yugo Nagata)

  -- ログ出力、コメント、関数名で使われていた "sticky bit" という用語を "setuid bit" 
     に置き換えました。(Yugo Nagata)

  -- レプリケーションモードで、明示的なトランザクション内のロードバランスができる
     ようになりました。(Tatsuo Ishii)

  -- 中国語マニュアルを最新の情報に更新しました。(Bambo Huang)

  -- ドキュメントの ssl_ca_cert と ssl_ca_cert_dir の記述を SSL セクションに移動
     しました。(Yugo Nagata)

  -- 日本語ドキュメントに ssl_ca_cert と ssl_ca_cert_dir の記述を加えました。
    (Yugo Nagata)

===============================================================================
pgpoolAdmin 3.3
===============================================================================

  ** 新機能

    - pgpool-II 3.3 の新しいパラメータを追加しました (Nozomi Anzai)

      wd_authkey, wd_escalation_command, clear_memqcache_on_escalation,
      wd_lifecheck_method, wd_heartbeat_port, wd_heartbeat_keepalive,
      wd_heartbeat_deadtime wd_lifecheck_dbname, wd_lifecheck_user,
      wd_lifecheck_password, heartbeat_destination, heartbeat_destination_port,
      heartbeat_device 
      
    - watchdog のステータスを表示するようになりました  (Nozomi Anzai, Yugo Nagata)
  
      watchdog 有効時に、pgpool-II の watchdog ステータスや、仮想 IP などの情報
      を表示します。 
    
    - GUI から PostgreSQL の停止/リロード/再起動ができるようになりました。
      (Nozomi Anzai)
     
   バックエンドに pgpool_pgctl 関数がインストールされているがあります。
   これは pgpool-II 3.3 の新機能で pgpool_recovery により提供されています。
   また、pgpoolAdmin と同じユーザ名のスーパユーザがバックエンドに存在している
   必要があります。
      
    - GUI から バックエンドの追加・削除ができるようになりました。(Nozomi Anzai)

    - ステータスページに pgpoolAdmin が動作しているホスト名を表示するようになりました。
    (Andrew Bruce, Nozomi Anzai)
      
    - ログの表示行数を制限する機能を追加しました。  (Yugo Nagata)

  ** Bug fixes
  
    - pgpool.conf のアップデート時に古いパラメータが書き込まれてしまうのを修正しました。
      (Yugo Nagata)

-- 
Yugo Nagata <nagata @ sraoss.co.jp>


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