PostgreSQLのレプリケーション
ストリーミングレプリケーション
同期するか非同期にするか
同期レプリケーション
スタンバイサーバの応答を待ってコミットする
スタンバイの最新性が高い
フェイルオーバに向く(PostgreSQL自体にはフェイルオーバの仕組みはない) スタンバイがダウンした場合、応答が返ってこないのでコミットできない
非同期レプリケーションに切り替える
ホットスタンバイ
非同期レプリケーション
スタンバイサーバの応答を待たずにコミットする
災害対策などで遠隔拠点にレプリケーションするときに向く
運用
プライマリが停止したとき
スタンバイに切り替えることを「昇格」と呼ぶ
スタンバイが故障したとき
同期レプリケーションしているならプライマリから切り離す
応答が返らないのでプライマリはコミットを完了できない
synchronous_standby_namesを書き換える(1:1構成なら空にする)
pg_ctl_reloadで再度読み込みする
レプリケーションの状況確認
walreceiverプロセスによるWALのreveive位置とWALのreplay位置を確認するよい
スタンバイで直接確認
pg_last_wal_receive_location
pg_last_wal_recplay_location
論理レプリケーション
10から導入された。対象とするテーブルや操作を指定したレプリケーション構成にできる
仕組みはストリーミングレプリケーションと同様にWALの転送
参考文献