# 数据库集群能解决什么问题?

# 单节点和集群哪个读写更快?

  • 低并发情况下,单节点 MySQL 读写速度快

  • 高并发情况下,MySQL 集群的读写速度更快

    大量并发如果集中在一个 MySQL 节点上,先不说内存撑不撑得住,磁盘 IO 都撑不住。

数据库集群的思路:

  • 读写分离方案
  • 数据切分方案

image-20200614211428024

# 单节点数据库的弊病

大型互联网程序用户群庞大,所以架构必须要特殊设计,比如:

  • 微信注册用户超 10 亿
  • 新浪微博用户超 3.3 亿
  • 今日头条用户超 2.4 亿

单节点的数据库无法满足性能上的要求:单节点链接数量最大 16000 多,大量用户情况下,根本就应付不过来

单节点的数据库没有冗余设计,无法满足高可用:一个节点挂了,这个业务也就瘫痪了。

高并发下的数据库压力:2016 年除夕,微信共收发红包 142 亿 个,比上一年增长 75.7%,最高峰值每秒收发红包 76 万 个,支付峰值 20.8 万 次每秒,创下世界纪录。

# 常见 MySQL 集群方案

常见的 MySQL集群方案有:

  • PXC :同步传输

    适合保存少量高价值数据

  • Replication:异步传输

    适合保存大量数据

# PXC 与 Replication 方案对比

image-20200614212702883

  • PXC 方案:事务是同步的

    执行一个事务,只有当数据同步到 slave 成功后,事务才能提交成功。

  • Replication:事务是异步的

    在 master 上提交成功了,但是异步同步失败了,在 slave 中就无法查询到数据

他们不是竞争关系,而是互补关系