マスターマスターとマスタースレーブのデータベースアーキテクチャ


117

2種類のデータベースアーキテクチャについて聞いたことがあります。

  • マスターマスター

  • マスタースレーブ

今日のWebにはマスターマスターの方が適しているのではなく、Gitのようなものです。すべてのユニットにデータのセット全体があり、1つがダウンしても問題はありません。

マスタースレーブは、SVN(気に入らない)を思い出させてくれます。

質問:

  1. それぞれの長所と短所は何ですか?

  2. iPhoneなどの携帯電話にローカルデータベースを作成する場合、どちらが適切ですか。

  3. これらのいずれかを選択することは、徹底的に検討する重要な要素ですか?


1
CAP定理-> Consistency Availability Partition Toleranceは、3つすべてを一緒にすることはできないと述べています。アプリケーションに応じて、どちらかを選択できます。
Pritam Banerjee

回答:


87

可用性、一貫性、複雑さのトレードオフです。最後の質問に最初に対処するには:これは問題ですか?はい、とても!データの管理方法に関する選択は絶対に基本的なものであり、決定を回避する「ベストプラクティス」はありません。特定の要件を理解する必要があります。

基本的な緊張があります:

1つのコピー:一貫性は簡単ですが、万が一ダウンしてしまった場合、誰もが水につかず、人々が遠隔地にいる場合、恐ろしい通信コストを支払う可能性があります。切断された状態で動作する必要がある可能性のあるポータブルデバイスを写真に持ってくると、1つのコピーではカットできません。

マスタースレーブ:データの各部分に所有マスターが1つしかないため、一貫性はそれほど難しくありません。しかし、そのマスターに会えない場合はどうしますか、何らかの延期された作業が必要です。

マスター-マスター:うまくいけば、すべてを提供できるようになり、単一障害点はなく、誰もがいつでも作業できます。これの問題は、完全な一貫性を維持することが非常に難しいことです。詳細については、ウィキペディアの記事を参照してください。

ウィキペディアには長所と短所の良い要約があるようです

メリット

  • 1つのマスターに障害が発生した場合、他のマスターは引き続きデータベースを更新します。

  • マスターは、いくつかの物理的なサイトに配置できます。つまり、ネットワーク全体に分散されます。

短所

  • ほとんどのマルチマスターレプリケーションシステムは、緩やかに整合しているだけです。つまり、遅延および非同期であり、ACIDプロパティに違反しています。

  • 熱心なレプリケーションシステムは複雑で、通信の待ち時間が発生します。

  • 関与するノードの数が増加し、必要な待ち時間が減少するため、競合の解決などの問題は扱いにくくなる可能性があります。


CouchDBはMVCCを使用します。この種類の一貫性の問題は、複数のマスターが直面した一貫性の問題を処理しますか?1つが再びオンラインになったときに、バージョン管理システムが一貫性を処理し、このマスターが正しい更新データを取得します。
never_had_a_name 2010

8
しかし、2人のユーザーが矛盾する何かを行うとどうなりますか?2人のユーザーが在庫の最後のアイテムを購入しようとした場合などです。2つのマスターがあり、各ユーザーが別のマスターにヒットしている場合、ある種の通信障害が発生するシナリオを想像してみてください。最終的に、整合性が損なわれるか、可用性が低下します。1人のユーザーに「ごめんね、他のマスターと話をするまでは何が起こっているのか本当にわかりません。」または、コミュニケーションが回復すると厄介な競合が発生します。
djna

2
金融取引や株式市場は何を使用していますか?彼らはいつもこの問題にぶつかっていますか?
CMCDragonkai 2014年

3
(金融システムの場合のように)更新された単一の「真実」が必要な場合は、マスター/スレーブまたは実際にはマスターのみが必要です。後で真実にパッチを適用できる場合(Gitなどのリビジョン管理システムでのマージの競合を考えてください)、マスター/マスターを使用できます。
djna 2014年

djnaは非常に顕著な観察をします。データベースには、ある種の「タイブレーカー」ロジックが必要です。最も重要なことは何ですか?最も「最近の」データ?これは、フィールドを書き換える場合には理にかなっていますが、「カウンター」を実行していて、結果を返す前にすべてのプロセスをインクリメント(またはデクリメント)する必要がある場合は意味がありません。特に、在庫切れの商品は販売しません。ネットワークパーティションがあった場合、一緒に戻ってきたらどうなりますか?これらはすべてCAP定理に関するものです。これは、異なるマシン間のコンセンサスを構築するために、Paxosのようなアルゴリズムを使用できる場所でもあります。
Peter

95

さまざまなデータベースアーキテクチャについても調査中。私は、将来研究している誰かに関連するかもしれないかなりの情報をまとめました。私は遭遇しました

  1. マスタースレーブ複製
  2. マスターマスターレプリケーション
  3. MySQLクラスタ

私のユースケースでは、MySQL Clusterを使用することにしました。ただし、私がまとめたさまざまな長所と短所については、以下を参照してください

1.マスター/スレーブレプリケーション

長所

  • 分析アプリケーションは、マスターに影響を与えることなくスレーブから読み取ることができます
  • マスターへの影響が比較的少ないデータベース全体のバックアップ
  • スレーブをオフラインにして、ダウンタイムなしでマスターに同期できます

短所

  • 障害が発生した場合、代わりにスレーブをマスターに昇格させる必要があります。自動フェイルオーバーなし
  • マスターに障害が発生した場合のダウンタイムおよびデータの損失
  • すべての書き込みは、マスタースレーブデザインのマスターに対しても行う必要があります。
  • バイナリログを読み取ってデータを各スレーブにコピーする必要があるため、スレーブを追加するたびにマスターに負荷がかかります
  • アプリケーションを再起動する必要があるかもしれません

2.マスターマスターレプリケーション

長所

  • アプリケーションは両方のマスターから読み取ることができます
  • 両方のマスターノードに書き込み負荷を分散します
  • シンプルで自動かつ迅速なフェイルオーバー

短所

  • 大まかに一貫している
  • 構成と展開がマスタースレーブほど単純ではない

3. MySQL Cluster

MySQLクラスター設計に基づく町の新しい子供。MySQLクラスタは、高可用性とスケーラビリティを念頭に置いて開発され、ダウンタイムがなく、高いアベイラビリティと水平方向のスケーラビリティを必要としない環境で使用するのに理想的なソリューションです。

詳細については、MySQL Cluster 101を参照してください

長所

  • (高い可用性)単一障害点なし
  • 非常に高いスループット
  • 99.99%の稼働率
  • 自動シャーディング
  • リアルタイムの応答性
  • オンライン操作(スキーマの変更など)
  • 分散書き込み

短所

言及されている3つのアーキテクチャーの詳細を説明するアーキテクチャー図を含む、私のブログの完全な内訳をご覧ください。


2
ガレラについて何か書いてもらえますか?Percona XtraDBクラスター?
イワノフ

短所の一部として「アプリケーションを再起動する必要があるかもしれません」。どういう意味ですか?
リリー

1
DBサーバーのIPを変更する必要がある場合は、新しく選択されたマスターから読み取るように、アプリケーションでも構成する必要があります。その結果、新しい構成設定を有効にするためにアプリを再起動する必要がある場合があります。それはすべて現在の設定に依存します。フローティングIPを使用してこれをバイパスすることもできます。一般的な考え方を説明するために
Skillachie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.