根据《使用 MySQL Cluster 扩展 Web 数据库指南》,MySQL Cluster 7.3 在使用同步更新复制的同时可以实现 99,999% 的可用性。这将与CAP 定理相反,因为它指出完美的可用性(99,999% 可以看作是这样,不是吗?)和一致性在分布式系统中是无法实现的。
如果负责副本的数据节点不可访问,集群将如何对更新做出反应?对于同步更新复制,它必须阻塞,这会影响可用性。
该指南指出:
- 数据节点内的数据同步复制到节点组内的所有节点。如果一个数据节点发生故障,那么总会有至少一个其他数据节点存储相同的信息。
- 在数据节点发生故障的情况下,MySQL 服务器或应用程序节点可以使用节点组中的任何其他数据节点来执行事务。应用程序只需重试事务,其余数据节点将成功满足请求。
但是,如果一个节点组由两个节点和一个崩溃组成(这里的示例),这将如何工作?据我所知,没有节点可以将更新复制到使用同步更新复制时会导致更新失败的内容?!复制是否只是在不存在要写入副本的节点时暂停?