【りーどれぷりか】

リードレプリカ とは?

公開:
💡 読み取り専用の分身を増やして、データベースの負担を分け合う
📌 このページのポイント
リードレプリカによる負荷分散 アプリケーション 書き込み 読み取り プライマリDB 読み書き両方 レプリカ 1 読み取り専用 レプリカ 2 読み取り専用 --- データ複製(レプリケーション)--- 書き込み → プライマリ / 読み取り → レプリカに分散 レプリカを増やすほど読み取り性能がスケールする
リードレプリカのイメージ
ひよこ ひよこ
リードレプリカって何なの?
ペンギン先生 ペンギン先生
データベースの「読み取り専用コピー」だよ。本体のデータベース(プライマリ)の内容がリアルタイムでコピーされていて、読み取りだけを担当するんだ。
ひよこ ひよこ
なんでコピーが必要なの?本体だけじゃダメなの?
ペンギン先生 ペンギン先生
ユーザーが増えるとデータベースへのアクセスが集中するよね。実はWebアプリのDBアクセスは8〜9割が読み取りなんだ。その読み取りをコピーに回せば、本体は書き込みに集中できて全体のパフォーマンスが上がるよ。
ひよこ ひよこ
図書館でいうと、本館が混んでるから分館を作る感じなんだね!
ペンギン先生 ペンギン先生
まさにそのイメージ!本館(プライマリ)で新しい本の登録をして、分館(リードレプリカ)では本を借りるだけ。分館はいくつでも増やせるから、利用者が増えても対応できるんだ。
ひよこ ひよこ
コピーのデータは常に最新なの?
ペンギン先生 ペンギン先生
ほぼリアルタイムだけど、わずかな遅延(レプリケーションラグ)があるよ。プライマリに書き込んでからレプリカに反映されるまで、通常はミリ秒〜数秒。だから「今まさに更新したデータをすぐ読みたい」場合はプライマリから読む必要があるんだ。
ひよこ ひよこ
クラウドだと簡単に作れるの?
ペンギン先生 ペンギン先生
AWSのRDSなら数クリックでリードレプリカを追加できるよ。Aurora、Cloud SQLAzure Database for MySQLなど主要なクラウドDBサービスは全部対応している。スケールアウトの最も手軽な手段の一つだね。
ひよこ ひよこ
リードレプリカが障害で落ちたらどうなるの?
ペンギン先生 ペンギン先生
リードレプリカが落ちても、プライマリが生きていればデータは失われないよ。読み取りが一時的に遅くなるだけ。逆にプライマリが落ちた場合、リードレプリカをプライマリに昇格させるフェイルオーバー機能もあるんだ。単なる負荷分散だけでなく、可用性の向上にも使えるのがリードレプリカの隠れた強みだよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リードレプリカ」って出てきたら「読み取り専用のデータベースのコピーで、負荷分散に使うもの」と思えればだいたいOK!
📖 おまけ:英語の意味
「Read Replica」 = 読み取り用の複製
💬 Read(読む)+ Replica(複製)で、読み取り専用のコピーという意味だよ
← 用語集にもどる