【りーどれぷりか】

リードレプリカ とは?

💡 読み取り専用の分身を増やして、データベースの負担を分け合う
📌 このページのポイント
リードレプリカによる負荷分散 アプリケーション 書き込み 読み取り プライマリDB 読み書き両方 レプリカ 1 読み取り専用 レプリカ 2 読み取り専用 --- データ複製(レプリケーション)--- 書き込み → プライマリ / 読み取り → レプリカに分散 レプリカを増やすほど読み取り性能がスケールする
リードレプリカのイメージ
ひよこ ひよこ

リードレプリカって何なの?

ペンギン先生 ペンギン先生

データベースの「読み取り専用コピー」だよ。本体のデータベース(プライマリ)の内容がリアルタイムでコピーされていて、読み取りだけを担当するんだ。

ひよこ ひよこ

なんでコピーが必要なの?本体だけじゃダメなの?

ペンギン先生 ペンギン先生

ユーザーが増えるとデータベースへのアクセスが集中するよね。実はWebアプリのDBアクセスは8〜9割が読み取りなんだ。その読み取りをコピーに回せば、本体は書き込みに集中できて全体のパフォーマンスが上がるよ。

ひよこ ひよこ

図書館でいうと、本館が混んでるから分館を作る感じなんだね!

ペンギン先生 ペンギン先生

まさにそのイメージ!本館(プライマリ)で新しい本の登録をして、分館(リードレプリカ)では本を借りるだけ。分館はいくつでも増やせるから、利用者が増えても対応できるんだ。

ひよこ ひよこ

コピーのデータは常に最新なの?

ペンギン先生 ペンギン先生

ほぼリアルタイムだけど、わずかな遅延(レプリケーションラグ)があるよ。プライマリに書き込んでからレプリカに反映されるまで、通常はミリ秒〜数秒。だから「今まさに更新したデータをすぐ読みたい」場合はプライマリから読む必要があるんだ。

ひよこ ひよこ

クラウドだと簡単に作れるの?

ペンギン先生 ペンギン先生

AWSのRDSなら数クリックでリードレプリカを追加できるよ。Aurora、Cloud SQLAzure Database for MySQLなど主要なクラウドDBサービスは全部対応している。スケールアウトの最も手軽な手段の一つだね。

ひよこ ひよこ

リードレプリカが障害で落ちたらどうなるの?

ペンギン先生 ペンギン先生

リードレプリカが落ちても、プライマリが生きていればデータは失われないよ。読み取りが一時的に遅くなるだけ。逆にプライマリが落ちた場合、リードレプリカをプライマリに昇格させるフェイルオーバー機能もあるんだ。単なる負荷分散だけでなく、可用性の向上にも使えるのがリードレプリカの隠れた強みだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リードレプリカ」って出てきたら「読み取り専用のデータベースのコピーで、負荷分散に使うもの」と思えればだいたいOK!
📖 おまけ:英語の意味
「Read Replica」 = 読み取り用の複製
💬 Read(読む)+ Replica(複製)で、読み取り専用のコピーという意味だよ
← 用語集にもどる