【れぷりけーしょん】
レプリケーション とは?
最終更新:
💡 データの変更を伝えて、別の場所に複製を保つ
データの変更を別の場所へ伝え、複製を維持する仕組み。同期・非同期の違い、読み取り時の遅れ、バックアップや切り替えとの関係を解説します。
レプリケーションは、コピーを一回作ること?
変更を別の場所へ伝えて、複製を維持する仕組みだよ。複製はレプリカとも呼ばれる。読み取りを分担したり、障害からの復旧に備えたりできるけれど、目的に合う構成と運用が必要だ。
複製なら、いつも最新の値?
非同期では、書き込み元で変更が完了しても、レプリカへの反映は後になる場合がある。直後にレプリカを読むと、変更前の値が返ることもあるよ。データが同じになるまでの遅れを考えるんだ。
古い値を読むのは、ダーティリード?
それとは別だよ。ダーティリードは、まだコミットされていない変更を読むこと。レプリカの遅れでは、以前にコミットされた値を読んでいる場合がある。確定前の値と、確定済みだけれど古い値を区別しよう。
同期にすれば、遅れは全部なくなる?
どの段階の確認を待つかによる。PostgreSQLでも、複製先でログを保存するまで待つ設定と、実際に適用して読み取れるまで待つ設定は違う。待つ分、書き込みの時間や、複製先が応答しない場合の影響も考えるよ。
バックアップも、切り替えも不要になる?
そうではないよ。誤った変更や削除も複製される場合があるので、過去の時点へ戻す備えが必要だ。バックアップには継続的に変更を保存する方法もある。また複製があるだけで自動切り替えが保証されるわけではなく、障害の検知と切り替え手順を設計するんだ。
もっと詳しく知りたい人へ
物理レプリケーションと論理レプリケーションは?
PostgreSQLでは、物理方式はストレージの変更を基に複製し、論理方式はテーブルなどのデータ変更を伝えます。論理方式では対象を選べますが、複製できる内容や制約を確認します。構成を名前だけで決めず、目的に合わせます。
更新直後の画面には、どこから読めばよい?
最新の変更を必要とする処理では、書き込み元から読む、反映を待つなどの設計を検討します。どのレプリカから読むか、障害時に許容するデータ損失と待ち時間も確認します。「読み取りを分けると必ず高速」という保証ではありません。
まとめ:ざっくりこれだけ覚えればOK!
「レプリケーション」って出てきたら「データの変更を伝え、別の場所に複製を保つ仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Replication」 = 複製を作り、維持すること
💬 ここではデータベースの複製を中心に扱います。方式や構成によって、伝える内容や反映のタイミングが異なります。