文档章节

mysql四种高可用方案整理

落叶刀
 落叶刀
发布于 2016/01/21 09:54
字数 1289
阅读 246
收藏 11

1,MySQL Cluster

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

mysql cluster适合的场景为:

具有非常高的并发需求,对可用性要求较高,或是数据需要分片的遵守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的适用场景为数据库访问量大,业务增长快,并且能实现读写分离的场景。
优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。
缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。

© 著作权归作者所有

落叶刀
粉丝 41
博文 126
码字总数 107596
作品 2
浦东
运维
私信 提问
浅淡MySQL集群高可用架构

前言高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都...

民工哥
2017/12/21
0
0
一文了解数据库高可用容灾方案的设计与实现

一个系统可能包含很多模块,如数据库、前端、缓存、搜索、消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用的实现可能更加复杂,对用户的服务可...

UCloudTech
2018/08/28
0
0
MySQL高可用在网易的最佳应用与实践

本文根据DBAplus社群第102期线上分享整理而成。 主题简介: 1、常见的MySQL高可用架构 2、分布式数据库高可用实践 3、基于keepalive的MySQL高可用改造 大家好,我是来自杭州研究院的潘威,今...

潘威
2017/05/08
0
0
MySQL高可用在网易的最佳应用与实践

本文根据DBAplus社群第102期线上分享整理而成。 主题简介: 1、常见的MySQL高可用架构 2、分布式数据库高可用实践 3、基于keepalive的MySQL高可用改造 大家好,我是来自杭州研究院的潘威,今...

潘威
2017/05/08
0
0
MySQL主从复制与高可用架构方案与项目环境准备_MySQL高可用复制与分布式集群架构01

MySQL高可用复制与分布式集群架构之01:MySQL主从复制与高可用架构方案与项目环境准备 视频教程学习地址 http://edu.51cto.com/course/14238.html 数据库学习专用QQ群:336282998、189070296...

风哥Oracle
2018/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
10分钟前
0
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
18分钟前
2
0
聊聊Elasticsearch的OsProbe

序 本文主要研究一下Elasticsearch的OsProbe OsProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/os/OsProbe.java public class OsProbe { private static f......

go4it
18分钟前
0
0
谈谈lucene的DocValues特性之NumericDocValuesField

在默认实现的DocValuesCosumer中,数值有可能分块存储也有可能放在一个数据块中存储。 分块的大小默认是16384,并且通过预先计算如果按一个块存储最大值与最小值的差所占用的比特数和分块存储...

FAT_mt
36分钟前
0
0
【BATJ】面试必问MySQL索引实现原理

BATJ面试题剖析 1、为什么需要使用索引? 2、数据结构Hash、平衡二叉树、B树、B+树区别? 3、机械硬盘、固态硬盘区别? 4、Myisam与Innodb B+树的区别? 5、MySQL中的索引什么数据结构? 6、...

须臾之余
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部