MySQL集群架构

集群架构设计

在集群架构设计时,主要遵从下面三个维度:
  1. 可用性
  1. 扩展性
  1. 一致性

可用性设计

  • 站点高可用,冗余站点
  • 服务高可用,冗余服务
  • 数据高可用,冗余数据
保证高可用的方法是冗余。但是数据冗余带来的问题是数据一致性问题。
实现高可用的方案有以下几种架构模式:
主从模式
简单灵活,能满足多种需求。比较主流的用法,但是写操作高可用需要自行处理。
双主模式,互为主从,有双主双写、双主单写两种方式,建议使用双主单写

扩展性设计

扩展性主要围绕着读操作扩展和写操作扩展展开。
如何扩展以提高读性能
  1. 加从库 简单易操作,方案成熟。 从库过多会引发主库性能损耗。建议不要作为长期的扩充方案,应该设法用良好的设计避免持续加从库来缓解读性能问题。
  1. 分库分表 可以分为垂直拆分和水平拆分,垂直拆分可以缓解部分压力,水平拆分理论上可以无限扩展。
如何扩展以提高写性能
分库分表
 

一致性设计

一致性主要考虑集群中各数据库数据同步以及同步延迟问题。可以采用的方案如下:不使用从库扩展读性能问题需要单独考虑,否则容易出现系统瓶颈。
增加访问路由层可以先得到主从同步最长时间t,在数据发生修改后的t时间内,先访问主库。

主从原理

主从复制方式

主从复制方式

主备切换方式

🎀
主备切换方式

读写分离

读写分离

主从延迟问题

主从延迟问题

双主模式

双主模式

分库分表

分库分表