第4章 · 障害対応·v1.0.0·更新 2026/7/8·読了目安 約12分
変更要約: 初版(主題G4・G4.1〜G4.3)
4.3レプリケーションの障害と復旧
この節の要点
レプリケーション運用中の障害対応を学びます。スタンバイをマスタへ昇格させるpg_ctl promote、旧マスタを新マスタの子として再構成するpg_rewind、WALを直接受信し続けるpg_receivewal、ロジカルレプリケーション特有の競合(conflict)、そしてストリーミングレプリケーションのエラーハンドリングを押さえます。
レプリケーション構成の障害対応は、単体サーバの障害対応と異なり、「マスタとスタンバイの関係をどう組み替えるか」という視点が加わります。マスタが完全に失われた場合の昇格(フェイルオーバー)、旧マスタを新体制に組み込み直す再同期、WAL供給の途絶への備え、そしてロジカルレプリケーション特有の適用時競合——これらはGoldの障害対応領域の中でも実運用の勘所が凝縮された部分です。
4.3.1昇格と再同期:pg_ctl promote・pg_rewind
- pg_ctl promote=ストリーミングレプリケーションのスタンバイを新しいマスタへ昇格させるコマンド。マスタ障害時のフェイルオーバーの中核操作で、実行後スタンバイは読み取り専用状態を抜け、通常の読み書き可能なマスタとして稼働を始める。
- pg_rewind=旧マスタ(障害から復旧した元マスタ)を、新マスタのタイムラインに追従するスタンバイとして再構成するツール。旧マスタと新マスタで分岐したWAL履歴の差分だけを巻き戻して同期し直すため、旧マスタ全体をベースバックアップから作り直すより高速に復帰させられるのが利点。ただし旧マスタ側のWALが必要なため分岐後すぐに使う必要がある。
- pg_receivewal=マスタからWALストリームを継続的に受信してファイルとして保存し続けるスタンドアロンのクライアントツール(旧称pg_receivexlog)。専用のWALアーカイブ先として使うほか、通常のアーカイブ(archive_command)が何らかの理由で機能していない間の補完的なWAL保全としても使われる。

