LoginSignup
27
18

More than 5 years have passed since last update.

PostgreSQL におけるレプリケーションの仕組み

Last updated at Posted at 2016-05-28

今回はPostgreSQLにおける同期、非同期レプリケーションの違いについて説明します。

PostgreSQLにおける同期/非同期レプリケーションの概要

PostgreSQLでのデータの書き込みはWAL(Write Ahead Log)に変更履歴として記録されています。
WALの詳細についてはマニュアルをご確認ください。

PostgreSQLでは、そのWALをスレーブに転送し、スレーブがそのWALを再生することでレプリケーションを実現しています。

  • 同期レプリケーション:WALファイルがスレーブのディスクに書き込まれるまでを保証
  • 非同期レプリケーション:WALファイルをスレーブに送信するまでを保証

レプリケーションを行うためのPostgreSQLのプロセス

マスタ、スレーブ間でのWALのやり取りは2つのプロセスによって実現されています。
マスタではwal_senderプロセス、スレーブではwal_receiverプロセスが起動します。まずはwal_receiverが起動し、マスタに接続を行います。wal_receiverプロセスからの接続に応じて、マスタでwal_senderプロセスが起動し、WALの転送が開始されます。
このような仕組みでレプリケーションは行われるため、max_wal_sendersは必ず「1」以上に設定する必要があります。
プロセス
※なんとなく絵も書いてみました。

更新SQL実行時のレプリケーションのイメージ

同期レプリケーションのイメージ

同期レプリケーション

非同期レプリケーションのイメージ

非同期レプリケーション

27
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
18