リードレプリカ りーどれぷりか
リードレプリカレプリケーション読み取り分散マスター・スレーブスケールアウト高可用性
リードレプリカって何のために作るの?
簡単に言うとこんな感じ!
リードレプリカは「読み取り専用のDBコピー」を作って、検索や集計の重い処理をそっちに振ることで、メインDBへの負荷を減らす仕組みだよ!「書き込み専用のサーバー」と「読み取り専用のサーバー」に仕事を分けて、全体のパフォーマンスを上げるんだ。
リードレプリカとは
リードレプリカ(Read Replica) とは、メインのデータベース(プライマリ / マスター)と同じデータを持つ読み取り専用のコピーDBです。レプリケーション機能を使ってプライマリの変更をリアルタイムに反映しながら、SELECT(読み取り)専用のクエリをリードレプリカに分散させます。
構成図
アプリケーション
├─ 書き込み(INSERT/UPDATE/DELETE) → プライマリDB
└─ 読み取り(SELECT) → リードレプリカ × N台
↑ レプリケーションで同期
プライマリとリードレプリカの役割
| 役割 | プライマリ | リードレプリカ |
|---|---|---|
| 書き込み(INSERT/UPDATE) | ◎ | ✕ |
| 読み取り(SELECT) | ○ | ◎(専用) |
| フェイルオーバー時 | 障害時にレプリカが昇格 | プライマリに昇格可能 |
リードレプリカの注意点
- レプリケーション遅延(Lag):プライマリとレプリカの間に数ミリ〜数秒の遅延が発生することがある。書き込んだ直後の読み取りで古いデータが返る場合がある
- 結果整合性(Eventual Consistency):レプリカのデータは最終的にはプライマリと一致するが、瞬間的には古い可能性がある
クラウドサービスでのリードレプリカ
| サービス | 対応 |
|---|---|
| Amazon RDS | リードレプリカ機能(最大15台) |
| Azure SQL Database | ジオレプリカ |
| Google Cloud SQL | リードレプリカ |
| Supabase | リードレプリカ(Postgres) |
歴史と背景
- 2000年代:MySQLのマスター・スレーブレプリケーションが普及
- 2010年代:クラウドDBサービスでリードレプリカがマネージドサービスとして提供開始
- 現在:マルチリージョン展開での地理的分散にも活用
関連用語
- レプリケーション — リードレプリカの基盤となる同期技術
- シャーディング — 読み取り負荷だけでなく書き込み負荷も分散する手法
- コネクションプール — リードレプリカへの接続管理
- データベースオブザーバビリティ — リードレプリカの遅延監視
- バックアップ・リカバリ — レプリカを使った無停止バックアップ