ウォームスタンバイとの組み合わせ

ウォームスタンバイとの組み合わせ

 ウォームスタンバイとは、可用性の向上のための機能で、PostgreSQL 8.2で実装されました。PostgreSQLは、データベースに対する変更をWAL(Write Ahead Log)というバイナリログに記録しています。

 まず主系のデータベースを待機系にベースバックアップとしてコピーし、その後のこのWALを待機系で次々と再生することによって、主系が故障してしまった場合に素早く代替機を用意することができます。

 このウォームスタンバイの機能をpgpool-IIと組み合わせることで、故障の検出から待機系サーバーの起動、そして系の切り替えまでをクライアントが意識することなく自動で行うことができます。

 これはちょうど「第4回:非同期レプリケーション!(http://www.thinkit.co.jp/article/98/4/)」で紹介した、Slony-Iとpgpool-IIの組み合わせの構成とよく似ています(Slony-Iとの組み合わせとの違いは後述)。

 ウォームスタンバイを構成するには、主系ではpostgresql.confをアーカイブログに出力するよう設定します。

 そして、主系のデータベースのある時点での完全なバックアップを待機系にコピーします。これらの手順については、PostgreSQLのドキュメント「高可用性のためのウォームスタンバイ(http://www.postgresql.jp/document/current/html/warm-standby.html)」を確認してください。

待機系の設定

 次に、待機系の$PGDATAディレクトリにrecovery.confを設定します。

 ウォームスタンバイの待機系は、PostgreSQL 8.3からcontribに収録されているpg_standby
というプログラムを使って、アーカイブされたログの再生を行います。recovery.confは、以下のような設定を行います。

restore_command = 'pg_standby -l -t /path/to/trigger /path/to/archivedir %f %p %r'

 pg_standbyの-tオプションはトリガファイルと呼ばれ、pg_standbyに対して主系の故障を知らせるトリガとなるファイルです。このファイルを発見すると、待機系はそれ以上ログファイルの到着を待つのをやめて、通常モードでPostgreSQLを起動します。

 ウォームスタンバイとpgpool-IIを組み合わせて使う場合、pgpool-IIが主系の故障を検出した時に、pgpool.confのfailover_commandを使ってpg_standbyのトリガファイルを作成することで、待機系に主系の故障を通知します。pgpool.confのfailover_commandは、以下のような設定を行います。

failover_command = 'ssh [待機系のホスト名] touch /path/to/trigger'

 これで、主系の故障を検出した時に待機系の起動を自動で行うことができます。

 「第4回:非同期レプリケーション!(http://www.thinkit.co.jp/article/98/4/)」で紹介したSlony-Iとpgpool-IIとの組み合わせと似た機能ですが、両者を比較すると、以下のような違いがあります。

・ウォームスタンバイはPostgreSQLの標準機能であるため、Slony-Iと比べて導入は簡単です。
・ウォームスタンバイは待機系でクエリを実行することはできません。このため負荷分散の目的で使うことはできません。
・ウォームスタンバイもSlony-Iも非同期のレプリケーションですが、通常ウォームスタンバイの方がタイムラグが長くなります。

 次はオンラインリカバリについて説明します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30