2017.11.12この記事は約5分で読めます。3.6以降のフェイルオーバー時のクライアントセッションについての検証。ストリーミングレプリケーションモードにおいて、pgpool2では、データベース障害が発生した場合、障害の起きたデータベースサーバの切り替え(プライマリ)又は切り離し(スタンバイ)を行なってくれる。3.5より前は、pgpool2の子プロセスは全て再起動されるため、クライアントのセッションも全て切断されていた。3.6以降はセッションの切断の影響を最小限にするための改良が行われているようで、障害の起きたデータベースサーバがスタンバイである且つセッションで負荷分散対象先でない場合において、クライアントセッションは切断されないようになった(他の改善点などは、以下リリースノートを参照)。今回は、pgpool_setupコマンドを使って、同一ノード上でPostgreSQLのプライマリ及びセカンダリノード、pgpool2を動かした状態で確認した。9.5.6psコマンドで確認しやすいよう、num_init_childrenは1、max_poolは2とした。負荷分散先のスタンバイサーバがダウンした場合まずプロセスツリーを確認しておく。同一ノード上からpsqlコマンドで接続した。pool_nodesコマンドが使えない。よって、psqlコマンドを使用している。psqlから接続した状態は以下である。showコマンドで負荷分散先が表示される。負荷分散先は、load_balance_nodeがtrueとなっていることがわかる。このセッションでは、PostgreSQLのセカンダリサーバが負荷分散先となっていることがわかる。row)プロセスの状態は以下のようになっている。プライマリ、セカンダリサーバのそれぞれにデータベースコネクション接続があることがわかる。/Users/guest/workspace/pgpool/test/etc/pool_hba.confスタンバイサーバダウン上記の状態でスタンバイサーバをダウンさせる。stopシャットダウン直後のプロセスツリーは以下。データベースのバックエンドプロセスは消えている。子プロセスは再起動され、プロセスIDが新しくなっていることが確認できる(1つは子プロセス、あとはPCPとworker)。/Users/guest/workspace/pgpool/test/etc/pool_hba.confクライアントのセッションは切断されている、リトライでは成功する。row)負荷分散先でないスタンバイサーバがダウンした場合プロセスツリーの確認。続いて、クライアントセッションの負荷分散先を確認し、トランザクション開始。/Users/guest/workspace/pgpool/test/etc/pool_hba.confスタンバイサーバダウン以下のコマンドで、スタンバイサーバの即時停止。stopスタンバイサーバダウン直後のプロセスツリー。pgpool2の子プロセス(PID:47185)は残っており、またプライマリサーバのバックエンドプロセスも残ったままとなっていることが確認できる。/Users/guest/workspace/pgpool/test/etc/pool_hba.confクエリも引き続き実行でき、クライアントセッションは切断されていない。\qクライアントのセッションが終了すると、該当する子プロセスは再起動される。プライマリサーバがダウンした場合この場合は、負荷分散先に関わらずクライアントのセッションは切断される。負荷分散先をセカンダリサーバにした状態で行なう。stopプライマリサーバダウン後の切り替え後のプロセス状態。pgpool2の子プロセスは再起動されている。/Users/guest/workspace/pgpool/test/etc/pool_hba.confクライアントセッションは切断されるが、リトライで成功する。row)まとめ以上まとめると、以下のようになっている。コピーbyebyehaikikyouをフォローするbyebyehaikikyouデバッグライフ関連記事postgresql複数バージョンのPostgreSQLソースを入れるPostgreSQLを調べたりするにあたり,異なるバージョンのPostgreSQLをソースからインストールすることがある。最初はリポジトリからダウンロードして個別に入れていたけれど,面倒になったので拙作ながらちょっとしたシェルスクリプトを書...postgresqlPostgreSQL9.5ストリーミングレプリケーションメモ最近PostgreSQLに触れる機会が増え学習中です。WALの中身を表示するPostgreSQLのWAL周りについて調べる機会がありメモ。pg_waldumpPostgreSQLでは、WALレコードをダンプするpg_waldumpというツールが用意されています。pg_waldumpはコマンドラインツールで、引数にW...postgresql複数バージョンのPostgreSQLを入れる2拙作なツールですが、複数バージョンのPostgreSQLをローカルマシンに入れて、テストや動作確認でバージョンを切り替えたりするツールを以前に作成したことがありましたが、色々と使い勝手も含めて改良したいなあと思っていたこともあり、今回新たに...postgresqlSQLクエリジェネレータsqlsmithを使ってみるsqlsmithというSQLを自動生成してくれるソフトウェアがある。laterとSQLite3がサポートされているらしい。OSX早速ビルドして試してみる。11から、JIT機能が追加されました。理解できていないのですが、どんな感じで動くのか、まずは触ってみたいと思います。導入と動作確認にあたり、以下の資料を参考にさせていただきました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。名前:moritetuITエンジニア地方でITエンジニアをしています。Webやスマフォアプリ、Hadoopなどのビッグデータに関するシステムに関わり、現在は企画開発の業務をしています。読書ホーム検索トップサイドバータイトルとURLをコピーしました。