ストリーミングレプリケーション
・WALレコード単位で同期
・同期、非同期モードが選択可能
・同期モードで複数のスレーブサーバ指定が可能。
→複数台のスレーブサーバを設定し、その中で指定数を同期モードにすることも可能。
例) スレーブが4台(スレーブ1~4)いる状態で2台は常に同期モードにする。(データ保護目的)
平常時はスレーブ1,2が同期モードで、スレーブ3,4は非同期モード
スレーブ1が障害時は、スレーブ3が同期モードになる。
ファイルベースログシッピング
・WALセグメント単位(16Mb)で同期
・非同期モードのみ
カスケードレプリケーション
・ストリーミングレプリケーションによる数珠つなぎ 例) マスター→スレーブ1→スレーブ2→スレーブ3 ※スレーブ1は上流サーバ、スレーブ2以降は下流サーバとも呼ばれる。
・マスター→スレーブ1間のストリーミングレプリケーションをやめスレーブ1をマスターに昇格させても、カスケードレプリケーションは継続する。
・同期モードのみ
共通
・ウォームスタンバイ、ログシッピングと呼ばれる
・WAL転送による同期
→ログシッピング
・差分転送&リカバリ先への自動適用によりダウンタイムを極めて短くしてリカバリが可能。
→ウォームスタンバイ
※この特性からHAや、遠隔地への災害対策などでされる。
・スレーブ側は読み取り専用で利用可能
・マスタとスレーブでOS、CPUアーキテクチャやメジャーバージョンが異なると利用不可。テーブルスペースのマウントポイントなどの実行環境は同じにした方が良い。
・マイナーリリース更新ではディスク書式を変更しないのがPostgreSQLグローバル開発グループの方式だがサポート対象にならない。
・マイナーリリース更新する時は、スタンバイから更新するのが安全( 下位互換性の観点より)
・ロジカルレプリケーションとの比較
以下URLがわかりやすい。
第26回:PostgreSQLでサポートされている2つのレプリケーション機能の違いと使い分け - 株式会社システムエグゼ
上記サイトより一部抜粋
項目 | ストリーミング | ロジカル |
---|---|---|
方法 | WALをそのまま転送 | WALの変更情報を論理的なレベルに変換(デコード)して転送 |
タイミング | WAL生成のタイミング | COMMIT完了のタイミング |
対象 | 全てのデータベース | データベース単位、テーブル単位 |
異なるメジャーバージョン間のサポート | 不可 | 可 |