CAP定理とMySQL

Sep 10 2020

CAP定理があります:R + W> N。たとえば、W = 1(マスター)、R = 6(スレーブ)、N = 6であるため、1つのスレーブが書き込みと読み取りを行うことができます。定理が言うように、私たちは強い一貫性で確信することができます(私たちは常に最新の値を取得します)。

データストレージがバージョンをチェックして最新のものを返す可能性があることを読みました。しかし、MySQLを使用しているという事実は本当ですか?それとも、何らかの仲介者を使用する必要がありますか?CAP定理はMySQLにどのように適用されますか?

回答

1 RolandoMySQLDBA Sep 10 2020 at 19:04

提案しているのは、クラスターが完全にシェアードナッシングアーキテクチャでない限り、実際にはCAP定理ではありません。CAP定理が私の古い投稿からのものであることに注意してくださいJan 01, 2013:ACIDとCAP定理の一貫性、それらは同じですか?

キャップ

  • 一貫性(すべてのノードは結果整合性を介して同じデータを持ちます)
  • 可用性
  • パーティショントレランス:システムの一部で任意のメッセージが失われたり障害が発生したりしても、システムは動作し続けます

各ノードには、完全なデータセットの完全なコピーがあります。特定のDBクラスターは、結果整合性をサポートする必要があります。つまり、クラスター全体でACIDコンプライアンスをサポートする必要があります。

あなたの実際の質問

しかし、MySQLを使用しているという事実は本当ですか?それとも、何らかの仲介者を使用する必要がありますか?CAP定理はMySQLにどのように適用されますか?

CAP定理で動作するMySQLのセットアップは次のとおりです。

  • InnoDBクラスター
  • MariaDBガレラクラスター
  • PerconaXtraDBクラスター

あなたの最高の仲買人??? 書き込んだデータが重要であり、利用可能である必要がある場合は、書き込んだマスターからデータを読み取ります。前述のクラスター設定のいずれにおいても、任意のノードをマスターにすることができます。データが1つのマスターに書き込まれる場合、クラスター内のすべてのノードが同じ特定のトランザクションでCOMMITを実行していれば、すべてのマスターにデータがあり、読み戻す準備ができている必要があります。

これらのマスターにスレーブが接続されている場合、各スレーブは、データが複製されてスレーブに表示されるまで、マスターCOMMITを待機する必要があります。