前言html
高可用架构对于互联网服务基本是标配,不管是应用服务仍是数据库服务都须要作到高可用。对于一个系统而言,可能包含不少模块,好比前端应用,缓存,数据库,搜索,消息队列等,每一个模块都须要作到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不只仅是能访问,还须要有正确性保证,所以数据库的高可用方案是一直以来的讨论热点,今天就各类的高可用方案,谈一下我的的一些见解,若有错误,还请指正!!前端
MySQL主从架构mysql
此种架构,通常初创企业比较经常使用,也便于后面步步的扩展linux
此架构特色:sql
一、成本低,布署快速、方便数据库
二、读写分离缓存
三、还能经过及时增长从库来减小读库压力安全
四、主库单点故障服务器
五、数据一致性问题(同步延迟形成)网络
MySQL+DRDB架构
经过DRBD基于block块的复制模式,快速进行双主故障切换,很大程度上解决主库单点故障问题
此架构特色:
一、高可用软件可以使用Heartbeat,全面负责VIP、数据与DRBD服务的管理
二、主故障后可自动快速切换,而且从库仍然能经过VIP与新主库进行数据同步
三、从库也支持读写分离,可以使用中间件或程序实现
MySQL+MHA架构
MHA目前在Mysql高可用方案中应该也是比较成熟和常见的方案,它由日本人开发出来,在mysql故障切换过程当中,MHA能作到快速自动切换操做,并且还能最大限度保持数据的一致性
此架构特色:
一、安装布署简单,不影响现有架构
二、自动监控和故障转移
三、保障数据一致性
四、故障切换方式可以使用手动或自动多向选择
五、适应范围大(适用任何存储引擎)
MySQL+MMM架构
MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任什么时候候只有一个节点能够被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,因此你能够用它来在一组居于复制的服务器启动虚拟ip,除此以外,它还有实现数据备份、节点之间从新同步功能的脚本。
MySQL自己没有提供replication failover的解决方案,经过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。
此方案特色:
一、安全、稳定性较高,可扩展性好
二、 对服务器数量要求至少三台及以上
三、 对双主(主从复制性要求较高)
四、 一样可实现读写分离
MySQL Cluster架构
Mysql官方推出的集群高可用方案,因为本人没有用过,很差评价
摘自网络上的一段解释
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。
因为MySQL Cluster架构复杂,部署费时(一般须要DBA几个小时的时间才能完成搭建),而依靠 MySQL Cluster Manager 只需一个命令便可完成,但 MySQL Cluster Manager 是收费的。而且业内资深人士认为NDB 不适合大多数业务场景,并且有安全问题。所以,使用的人数较少。
有兴趣的能够研究下官方文档:
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux.html