CAP定理-为什么Mysql是CA

nik*_*adi 5 mysql system-design cap

根据 CAP

一致性——所有节点给出相同的数据

可用性是指即使集群中的某个节点出现故障也能够访问集群。

分区容忍意味着即使两个节点之间存在“分区”(通信中断)(两个节点都已启动,但无法通信),集群仍能继续运行。

但Mysql默认行为是主从或主主。

所以对于,主从

  • 不存在一致性,因为从属设备可能会出现滞后,因此从从属设备读取的数据不一致。
  • 不存在可用性,因为如果没有 DBA 干预,从机无法成为主机。

所以对于,大师大师

  • 不存在一致性,因为从属设备可能会出现滞后,因此从从属设备读取的数据不一致。
  • 不存在可用性,因为如果没有 DBA 干预,从机/其他主机无法成为主机。
  • 它是部分容忍的,因为在网络故障的情况下两者都可以正常工作。

我错过了什么吗?

小智 5

第一点是 CAP 定理适用于分布式数据库,应该用这些术语来理解。

现在来看看 CAP 定理,根据维基百科:

  • 一致性:每次读取都会收到最近的写入或错误
  • 可用性:每个请求都会收到一个(非错误)响应,但不保证它包含最新的写入
  • 分区容错性:尽管节点之间的网络丢弃(或延迟)任意数量的消息,系统仍继续运行。

因此,当您说MySql默认行为是主从时,则意味着主节点节点只是主节点和辅助节点,并且同时只有单个节点(即主节点)用于处理任何用户请求。因此,分区容错性在这里已经受到损害。

但数据库仍然是一致的,因为所有请求(读/写)都会发送到主节点,用户将始终获得相同的一致数据。

并且数据库是可用的,因为所有请求都会收到响应,因为所有请求都发送到同一个主节点。

因此默认情况下Mysql位于CA数据库中。从站延迟不会影响这里的一致性可用性

MySql 还有另一种可能性,通过一些配置调整,它可以成为CP 数据库,但可用性需要受到影响。这将是分布式的多个主节点,并通过它们之间的网络保持同步。在这种情况下,如果其中任何一个网络或分区中断,那么一致性是首选,意味着所有读取请求将获得相同的数据,不会出现损坏,因为写入请求可用性会受到损害。


Ies*_*hua 2

MySQL 数据库引擎通过引入节点来平衡集群设计来达到 CAP 定理。\n因此,当您有两 (2) 个节点时,如果两台服务器之间存在网络问题,集群将分为 2 个分区。每个成员将拥有成员总数的50%(1/2)。这就是为什么没有一个分区达到仲裁并且没有一个分区允许查询的原因。因此,为了获得完整的分区容错性,群集设计需要至少添加第三个节点,以便您的数据库达到一次故障的分区容错性。\n在此输入图像描述

\n

因此,即使两个节点之间的“分区”(通信中断)(两个节点都已启动,但无法通信),集群仍会继续运行,因为一个分区仍然具有法定人数(2/3 = 66%,较大)超过 50%)。

\n