レプリケーション (replication) は、あるデータベースの内容を、別のサーバー上のデータベースへ複製し、変更を継続的に同期し続ける仕組み です。
主に 可用性を高める 読み取り負荷を分散する バックアップや分析用にデータを逃がす といった目的で使われます。
まず押さえたいポイント
- 書き込みを受ける
主系 (プライマリ / マスター)と、複製を受け取る複製系 (レプリカ / スレーブ)がある - 主系の変更が、複製系へ自動で反映され続ける
- 主系が落ちても複製系へ切り替えれば (フェイルオーバー) 止まりにくくなる
主な方式
非同期レプリケーション— 主系は複製の完了を待たずに応答する。速いが、わずかな遅れ (レプリケーションラグ) が出る同期レプリケーション— 複製の完了を待ってから応答する。整合性は高いが、書き込みが遅くなりやすい
多くのシステムは、性能を優先して非同期を使い、遅延を許容できない部分だけ同期を検討します。
主な用途
可用性の向上— 主系が落ちても複製系へ切り替えてサービスを継続する読み取りの分散— リードレプリカとして参照クエリを逃がし、主系の負荷を下げるバックアップ・分析— 本番に影響を与えずに、複製側でバックアップや重い集計を実行する地理的な分散— 利用者に近い拠点へ複製を置き、アクセスを速くする
同じ「複製」でも、目的によって構成や同期方式の選び方が変わります。
注意点 (レプリケーションラグ)
非同期では、主系に書いた直後に複製系を読むと、まだ反映されていない古いデータ が返ることがあります。
たとえば 投稿した直後に一覧へ出てこない といった現象です。リードレプリカで読み取りを分散するときは、この遅延を考慮した設計が必要です。
データベースを別サーバーに分ける構成全体は、DBサーバーを分ける必要性とは?Webと同居の限界・分離するメリットと判断基準 で整理しています。