CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。
但是,我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来。
也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言。
而在可用性(A)及一致性(C)方面,因为只有一个节点对外提供服务,所以自然可用性和一致性都是可以保障的。(即使发生了主从延迟,也不影响主节点的一致性或者可用性)
因此,我们可以认为,MySQL 是一个 AC 的数据库。即从节点的延迟不会影响一致性或可用性。
但是,MySQL在使用的时候,还有一种做法,那就是读写分离,即在主库上操作写,在从读库上进行读,这时候主库和从库都是对外提供服务的。这时候的MySQL就从一个AC的系统,变成了一个AP的系统了。
因为在出现网络延迟的时候,MySQL的从节点一样可以正常响应请求,只不过返回的数据可能是旧数据,这就是典型的优先保证了可用性,而牺牲了一致性。
所以,总结一下就是,MySQL在默认情况下,是一个AC的数据库系统,在读写分离的情况下,是一个AP的数据库系统。