mysql四种高可用方案整理

1,MySQL Cluster mysql

其实是在无共享存储设备的状况下实现的一种彻底分布式数据库系统,其主要经过NDB Cluster(简称NDB)存储引擎来实现。全部数据和索引都必须装载在内存中才可以正常运行,可是最新的MySQL Cluster 版本已经能够作到仅仅将全部索引和索引数据装载在内存中便可,实际的数据能够不用所有装载到内存中。sql

mysql cluster适合的场景为:shell

具备很是高的并发需求,对可用性要求较高,或是数据须要分片的遵照SQL标准的传统RDBMS系统。数据库

 Mysql-cluster的优缺点                                                                        
优势:                                                                                 
a)         99.999 %的高可用性                                                           
b)         快速的自动失效切换
c)         灵活的分布式体系结构,没有单点故障
d)         高吞吐量和低延迟
e)         可扩展性强,支持在线扩容
缺点:
a)         存在不少限制,好比:不支持外键,数据行不能超过8K(不包括BLOB和text中的数据)
b)         部署、管理、配置很复杂
c)         占用磁盘空间大,内存大
d)         备份和恢复不方便
e)         重启的时候,数据节点将数据load到内存须要很长时间。后端

2,Lvs+Keepalived+Mysql单点写入主主同步高可用方案:安全

lvs提供负载均衡,keepalived做为故障转移,提升系统的可用性。可是通常的mysql高可用为了实现mysql数据的一致性,通常都是采用单点写入。服务器

适合的场景:并发

适用于只有两台数据库服务器而且尚未实现数据库的读写分离的状况,读和写都配置VIP。这个方案可以便于单台数据库的管理维护以及切换工做。好比进行大表的表结构更改、数据库的升级等都是很是方便的。负载均衡

优势:
 安装配置简单,实现方便,高可用效率好,能够根据服务与系统的可用性多方面进行切换。
 能够将写VIP和读VIP分别进行设置,为读写分离作准备。
 扩展不是很方便。
 能够在后面添加多个从服务器,并作到负载均衡。
缺点:
 在启动或者恢复后会当即替换掉定义的sorry_server,所以若是要实现指定条件替换或者不替换须要经过其余方式实现,好比:临时更改mysql的端口等。
 切换须要1s左右的时间。,分布式

3,Heartbeat高可用Mysql主主同步方案:

 Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证。默认状况下只有一台mysql在工做,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务。

适用场景:
该方案适合只有两台数据库的状况,访问量不大,不须要实现读写分离的状况
优势:
配置简单、,可配置主机恢复后是否切换回master。不存在单点故障。
缺点:
当mysql服务挂掉或者不可用的状况下不能进行自动切换,须要经过crm模式实现或者额外的脚本实现(好比shell脚本监测到master的mysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去)。
默认启动以及切换后的backup话mysql不会启动起来,所以这对于mysql复制是很不利的。所以须要作好监控,发生切换之后须要手动去启动。或者mysql之间不使用复制,而是用共享存储或者DRBD,这样能解决这个问题。 不方便扩展。 可能会发生脑裂问题

4,MMM高可用mysql方案

MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),MySQL自己没有提供replication failover的解决方案,经过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不只能提供浮动IP的功能,更难得的是若是当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。

适用场景:MMM的适用场景为数据库访问量大,业务增加快,而且能实现读写分离的场景。优势:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉之后,另外一个主当即接管,其余的从服务器能自动切换,不用人工干预。缺点:至少三个节点,对主机的数量有要求,须要实现读写分离,对程序来讲是个挑战。

相关文章
相关标签/搜索