【りーどれぷりか】
リードレプリカ とは?
最終更新:
💡 読み取り専用の分身を増やして、データベースの負担を分け合う
プライマリデータベースの読み取り用コピー。書き込みはプライマリが担当し、読み取りをレプリカへ振り分けて負荷を分散する。非同期複製では更新の反映に遅延がある。
📌 このページのポイント
- プライマリのデータを複製し、読み取り処理を分担する
- 読み取りの接続先をアプリや接続の仕組みで振り分ける
- 非同期複製では反映が遅れる。更新直後の確認などは整合性の要件を考える
- 対応する方式・台数・昇格や障害時の切り替えはサービスによって異なる
リードレプリカって何なの?
なんでコピーが必要なの?本体だけじゃダメなの?
読み取りが多く、本体の処理能力が足りないときに役立つよ。検索や集計をレプリカへ振り分ければ、本体の負担を減らせる。ただし、全てのアプリで読み取りの割合が同じだったり、必ず速くなったりするわけではないんだ。
図書館でいうと、本館が混んでるから分館を作る感じなんだね!
本館で更新し、分館で読めるように写しを用意するイメージだね。ただし更新が分館へ届くまで時間がかかることがあるし、分館を無制限に増やせるわけではない。台数の上限や費用、複製の負荷も確認するんだ。
コピーのデータは常に最新なの?
非同期複製では、書き込んだ直後のデータがまだ見えないことがあるよ。遅延は負荷や通信などで変わるので、いつも数秒以内とは限らない。更新直後の確認など最新の状態が必要な読み取りは、プライマリを使うなどの方法を考えるんだ。
クラウドだと簡単に作れるの?
Amazon RDSなどに作成機能があるよ。対応するエンジンや構成はサービスごとに確認しよう。コピーを作るだけでアプリの読み取りが自動で移るとは限らないので、接続先の振り分けも必要になるんだ。
リードレプリカが障害で落ちたらどうなるの?
その接続先への読み取りが失敗する場合があるよ。再接続や別の接続先への切り替えを設計しておく。プライマリの障害時にはレプリカを独立したDBへ昇格できる構成もあるけど、自動切り替えや未反映データの扱いは別に確認する必要があるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「リードレプリカ」って出てきたら「読み取りの負荷を分担するデータベースのコピー」と思えばだいたいOK!
📖 おまけ:英語の意味
「Read Replica」 = 読み取り用の複製
💬 Read(読む)+ Replica(複製)で、読み取り専用のコピーという意味だよ