【れぷりけーしょん】

レプリケーション とは?

最終更新:
💡 データの変更を伝えて、別の場所に複製を保つ

データの変更を別の場所へ伝え、複製を維持する仕組み。同期・非同期の違い、読み取り時の遅れ、バックアップや切り替えとの関係を解説します。

📌 このページのポイント
非同期の複製:反映までに時間差書き込み元で変更が完了した時点書き込み元確定済み v2レプリカ反映前 v1変更を伝える。この時点はまだ適用前時間が進み、反映された時点書き込み元v2レプリカ適用済み v2v1も確定済み。未確定変更を読む話とは別誤った変更も複製される。復旧の備えは別
横矢印は変更を伝える方向、上下は時間の違いです。v1・v2はデータの版で製品バージョンではありません。同期の確認段階や切り替えの設計は別に確認します。
ひよこ ひよこ
レプリケーションは、コピーを一回作ること?
ペンギン先生 ペンギン先生
変更を別の場所へ伝えて、複製を維持する仕組みだよ。複製はレプリカとも呼ばれる。読み取りを分担したり、障害からの復旧に備えたりできるけれど、目的に合う構成と運用が必要だ。
ひよこ ひよこ
複製なら、いつも最新の値?
ペンギン先生 ペンギン先生
非同期では、書き込み元で変更が完了しても、レプリカへの反映は後になる場合がある。直後にレプリカを読むと、変更前の値が返ることもあるよ。データが同じになるまでの遅れを考えるんだ。
ひよこ ひよこ
古い値を読むのは、ダーティリード?
ペンギン先生 ペンギン先生
それとは別だよ。ダーティリードは、まだコミットされていない変更を読むこと。レプリカの遅れでは、以前にコミットされた値を読んでいる場合がある。確定前の値と、確定済みだけれど古い値を区別しよう。
ひよこ ひよこ
同期にすれば、遅れは全部なくなる?
ペンギン先生 ペンギン先生
どの段階の確認を待つかによる。PostgreSQLでも、複製先でログを保存するまで待つ設定と、実際に適用して読み取れるまで待つ設定は違う。待つ分、書き込みの時間や、複製先が応答しない場合の影響も考えるよ。
ひよこ ひよこ
バックアップも、切り替えも不要になる?
ペンギン先生 ペンギン先生
そうではないよ。誤った変更や削除も複製される場合があるので、過去の時点へ戻す備えが必要だ。バックアップには継続的に変更を保存する方法もある。また複製があるだけで自動切り替えが保証されるわけではなく、障害の検知と切り替え手順を設計するんだ。
もっと詳しく知りたい人へ

物理レプリケーションと論理レプリケーションは?

PostgreSQLでは、物理方式はストレージの変更を基に複製し、論理方式はテーブルなどのデータ変更を伝えます。論理方式では対象を選べますが、複製できる内容や制約を確認します。構成を名前だけで決めず、目的に合わせます。

更新直後の画面には、どこから読めばよい?

最新の変更を必要とする処理では、書き込み元から読む、反映を待つなどの設計を検討します。どのレプリカから読むか、障害時に許容するデータ損失と待ち時間も確認します。「読み取りを分けると必ず高速」という保証ではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「レプリケーション」って出てきたら「データの変更を伝え、別の場所に複製を保つ仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Replication」 = 複製を作り、維持すること
💬 ここではデータベースの複製を中心に扱います。方式や構成によって、伝える内容や反映のタイミングが異なります。

参考資料

← 用語集にもどる