🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

2回答

5511閲覧

更新が発生した場合のリードレプリカの挙動について

aae_11

総合スコア178

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/10/20 03:35

編集2019/10/20 03:47

RDSにおける、リードレプリカについて、ご質問があります。
前提の知識としまして、リードレプリカとは、更新用データベース(マスター)からレプリケーションされた参照専用のデータベースだと認識しております。
仮になのですが、RDSを使用し、データーベースを作成しそのデータベースから、リードレプリカを作成したとします。
その場合、基本的には、データベースを参照する場合、リードレプリカからの参照となるかと思いますが、データベースの更新を行う場合、マスターであるデータベースを更新するかと思うのですが、更新が行われたタイミングと同じタイミングでリードレプリカも更新がなされなければならないかと思います。ここで、疑問点なのですが、リードレプリカは参照専用であるにも関わらず、更新を行う場合、リードレプリカを作成する意味がないように思えます。
いまいち、更新が発生した場合の挙動について、良く分からない為、教えていただけましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

リードレプリカとは、更新用データベース(マスター)からレプリケーションされた参照専用のデータベース

ご認識のとおりです。

データベースを参照する場合、リードレプリカからの参照となる

こちらもご認識のとおりです。

データベースの更新を行う場合、マスターであるデータベースを更新する

ご認識のとおりです。

更新が行われたタイミングと同じタイミングでリードレプリカも更新がなされなければならない

正確にはリードレプリカは「非同期レプリケーション」なので、同期的にレプリケーションは行われません。が、速度に違いはあまりないです。

Amazon RDS リードレプリカ - リードレプリカとマルチ_AZ_配置

リードレプリカ
非同期レプリケーション – 高い拡張性

 

リードレプリカは参照専用であるにも関わらず、更新を行う場合、リードレプリカを作成する意味がない

意味はあります。

Master

replicaA
replicaB
replicaC

とあった場合、Master 単体に比較して読み込みの負荷は1/3に軽減されます (ざっくりとした説明です)

RDSではリードレプリカを増減させることでキャパシティをスケールすることもできます。

また、Master が応答しない場合に、リードレプリカを昇格させることで、可用性を向上させることができます。

更新が発生した場合の挙動

上述のとおりです。通常数百ms程度以内で完了します。

投稿2019/10/20 06:08

michi_h

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/10/20 07:36

ご丁寧にご回答頂き、ありがとうございます。 すみません。以下2点ほど、未だ理解しきれない部分があり、お聞きしたいです。 >Master 単体に比較して読み込みの負荷は1/3に軽減されます こちらなのですが、感覚的には、リードレプリカを3つ作成した場合、1つのMasterデータベースに格納されているデータを3つのデータベースに分けるといったような感じで捉えても大丈夫でしょうか...? >同期的にレプリケーションは行われません こちらなのですが、基本的には、Masterのデータベースが更新されたタイミングで、自動で直ぐにリードレプリカのデータも更新が行われるのでしょうか...? >Master が応答しない場合に、リードレプリカを昇格させることで、可用性を向上させることができます。 リードレプリカをMasterに昇格させ、使用していくといった使い方もできるのですね... 勉強になります。
guest

0

前提の知識としまして、リードレプリカとは、更新用データベース(マスター)からレプリケーションされた参照専用のデータベースだと認識しております。

前提としてはご認識の通りですね。

ここで、疑問点なのですが、リードレプリカは参照専用であるにも関わらず、更新を行う場合、リードレプリカを作成する意味がないように思えます。

更新の場合はリードレプリカにアクセスしてもなにもできません。
なのでマスターにアクセスする必要があります。
リードレプリカを使うケースは参照アクセスの負荷軽減です。
参照アクセスによる負荷が高い場合、リードレプリカのほうにアクセスさせることによってマスターの負荷を軽減できます。
参照アクセスについてはリードレプリカを増やせばスケールアウトできるので負荷分散させやすいですね。

ただし更新のアクセスが多い場合は確かにリードレプリカを増やしたところであまり効果が見込めないので別のアプローチが必要です。
最も簡単なのはスケールアップですが、スケールアップは無限に出来るわけではなく、超高負荷環境の場合はDB分割をするなど工夫が必要で、簡単ではありません。
ディライトワークス(FGOの運営会社)の例

投稿2019/10/21 03:43

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/10/21 04:39

ご丁寧にご説明くださりありがとうございます。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問