"Guide to Scaling Web Databases with MySQL Cluster"によると、MySQL Cluster 7.3 は、同期更新レプリケーションを使用しながら 99,999% の可用性を達成できます。これは、分散システムでは完全な可用性 (99,999% と見なすことができますよね?) と一貫性は達成できないと述べているCAP 定理に対するアンチテーゼです。
レプリカを担当するデータノードに到達できない場合、クラスターは更新に対してどのように反応しますか? 同期更新レプリケーションの場合、ブロックする必要があり、可用性に影響します。
ガイドには次のように記載されています。
- データ ノード内のデータは、ノード グループ内のすべてのノードに同期的に複製されます。データ ノードに障害が発生した場合、同じ情報を格納している他のデータ ノードが少なくとも 1 つ存在します。
- データ ノードに障害が発生した場合、MySQL サーバーまたはアプリケーション ノードは、ノード グループ内の他のデータ ノードを使用してトランザクションを実行できます。アプリケーションはトランザクションを再試行するだけで、残りのデータ ノードは要求を正常に満たします。
しかし、ノード グループが 2 つのノードで構成され、1 つのノードがクラッシュした場合 (例はこちら)、これはどのように機能するのでしょうか? 私が理解している限り、同期更新レプリケーションを使用しているときに更新を失敗させるものに更新をレプリケートするノードはありませんか?! レプリカを書き込むノードが存在しない間、レプリケーションは一時停止されていますか?