「大規模サービス技術入門」という本を読みながら、大規模Webサービスを構築する提で、DB構成について勉強しています。
いま、データベースの負荷分散のためにマスタスレーブ構成(1:3)を構築しようと思っています。
書籍によると「Webサービスにおける8割〜9割のDBアクセスは参照系である」とのことでマスタスレーブ構成を構築するのはいいのですが、「参照はできる限りDBサーバのメモリにのるようにする」「メモリにのらなければ、テーブル単位で分割する」とありました。
またマスタを冗長化するマルチマスタは少し大変だということも記述されていました。
これに関して、以下について質問させていただきます。
- メモリにのせることを考慮した場合、スレーブへのアクセスは(負荷率で振り分ける)ロードバランサで分散させるのではなく、どのテーブルへアクセスするかで分散すべきということでしょうか?
例: blogs
と tags
テーブルを参照したければ2番目のスレーブへ
例: comments
テーブルを参照したければ3番目のスレーブへ
2. テーブル単位で分割する場合、上記のような分散方法で新しいスレーブを作成するということでしょうか?
例: 2番目のスレーブでのみ参照されていた tags
テーブルを分割したい場合、4番目のスレーブを構築し tags
テーブルの参照はすべて4番目のスレーブへ向ける
3. ↑よりも効率的な方法、またはMySQLによる標準機能等ありましたらご教授ください。
4. マスタスレーブかつマルチマスタ構成を構築する場合においてテーブル単位でマスタを分割する場合、特定のテーブルのみを持つデータベースを新たに作成することになるのでしょうか?
例: tags
テーブルへの書き込みを分散したい場合、 app-tags-master
というデータベースを別途作成し、新しいDBサーバ上で動かす
例: tags
テーブルへの書き込みは先ほどのDBサーバへすべて向ける
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/19 03:33 編集