高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用方案是一直以来的讨论热点,今天就各种的高可用方案,谈一下个人的一些看法,如有错误,还请指正!!

MySQL 主从架构



此种架构,一般初创企业比较常用,也便于后面步步的扩展



此架构特点:


1、成本低,布署快速、方便


2、读写分离


3、还能通过及时增加从库来减少读库压力


4、主库单点故障


5、数据一致性问题(同步延迟造成)

MySQL+DRDB 架构



通过 DRBD 基于 block 块的复制模式,快速进行双主故障切换,很大程度上解决主库单点故障问题


银行mysql高可用架构 mysql数据库高可用架构_高可用



此架构特点:


1、高可用软件可使用 Heartbeat, 全面负责 VIP、数据与 DRBD 服务的管理


2、主故障后可自动快速切换,并且从库仍然能通过 VIP 与新主库进行数据同步


3、从库也支持读写分离,可使用中间件或程序实现

MySQL+MHA 架构



MHA 目前在 Mysql 高可用方案中应该也是比较成熟和常见的方案,它由日本人开发出来,在 mysql 故障切换过程中,MHA 能做到快速自动切换操作,而且还能最大限度保持数据的一致性


银行mysql高可用架构 mysql数据库高可用架构_高可用_02



此架构特点:


1、安装布署简单,不影响现有架构


2、自动监控和故障转移


3、保障数据一致性


4、故障切换方式可使用手动或自动多向选择


5、适应范围大(适用任何存储引擎)

MySQL+MMM 架构



MMM 即 Master-Master Replication Manager for MySQL(mysql 主主复制管理器),是关于 mysql 主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟 ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。


MySQL 本身没有提供 replication failover 的解决方案,通过 MMM 方案能实现服务器的故障转移,从而实现 mysql 的高可用。


银行mysql高可用架构 mysql数据库高可用架构_mysql_03



此方案特点:


1、安全、稳定性较高,可扩展性好


2、 对服务器数量要求至少三台及以上


3、 对双主(主从复制性要求较高)


4、 同样可实现读写分离