MYSQL数据库高可用方案探究
MySQL作为最关键的应用数据存储中心,如何保证MySQL服务的可靠性和持续性,是我们不得不细致考虑的一个问题。当master宕机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master宕机并进行相应的故障转移处理,都需要仔细考虑与规划。
要保证MySQL数据不丢失,replication是一个很好的解决方案,而MySQL提供了一套强大的replication机制,replication能极大地提升数据安全,异步复制的方式也保证了sql读写性能不受太大影响。在大量企业长期的使用和实践中,已经形成多套可靠的mysql高可用方案,如: keepalived+replication,MHA, MMM, heartbeat+共享存储,mysql cluster等等。
HA的三种工作方式:
(1)主备方式
工作原理:主机工作,备机处于准备状况;当主机宕机时,可以配置备机接管主机的一切工作,待主机恢复正常后,再按使用者的设定是否将服务切换到主机上运行,mysql自带的replication就是这样的一种工作方式。
(2)双机互备方式
工作原理:两台主机同时运行服务工作且相互检测服务可用性,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证业务连续性和可靠性,该双机热备方式需要第三方HA软件的支持,如keepalived,heartbeat,以及ROSEHA等商业软件。
(3)集群工作方式
工作原理:多台主机一起工作,运行同样的一个或几个服务,各服务定义一个或多个备用主机或实行负载均摊,当某个主机故障时,运行在其上的服务就可以被其它主机接管,集群内任何一个主机宕机不影响业务的持续性。Mysql cluster 就是这样的集群工作方式。
先介绍以下为几种常见的mysql高可用方案:
方案一:
MYSQL+REPLICATION
方案概述:
MySQL复制基于主服务器在二进制日志中记录所有对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志 每个从服务器从主服务器接收二进制日志并保存到本地文件中,即中继日志。从服务器SQL线程读取中继日志并执行日志中包含的更新,从而使本地数据与主服务器保持一致。
方案拓扑:
优点:
成本低、经济实惠、后期维护方便,整套系统架构简单,故障率低,便于实现读写分离。
缺点:
不能实现故障自动转移,需要人工干涉主从切换,更改应用层的数据库IP地址。
方案二:
MYSQL+KEEPALIVED/HEARTBEAT+共享存储
方案概述:
本方案是典型的双机热备架构,采用高可靠性的HA双机热备软件来保证数据库服务的稳定性及连续性。正常情况下两台mysql主机一台出于active状态,一台出于standby状态,HA软件维持一个VIP提供对外访问,当active主机出现问题宕机后,系统将自动切换到备机上继续提供服务,而整个过程只需要几秒到几十秒的时间即可完成,当mysql主机故障维修完毕后,服务可自动回切。本方案需共享存储的支持,所有mysql数据均保存在共享存储上。
方案拓扑:
优点:
维护简单,安全性、稳定性高,出现故障系统将自动切换,采用vip故障切换应用层无感知。
缺点:
需要有共享存储设备,成本较高,双机热备不支持读写分离。
方案三:
MYSQL+MASTER-MASTER-REPLICATION+LVS/HAPROXY/NGINX
方案简介:
本方案基于mysql replication技术,采用master-master replication的双主复制模式,两台服务
器都可读可写,都处于active状态,前端LVS(或HAPROXY或NGINX)代理并路由访问请求,将
写请求(应用层实现读写分离)分发到server1,将读求分发到server2[或负载均衡到server1和
server2],server1和server2互为主从,当任何一台发生故障时可双向实现故障转移,故障恢复可自
动回切。
方案拓扑:
优点:
秒级故障自动切换,可自动回切,采用固定ip故障切换应用层无感知,可实现读写分离。
缺点:
架构稍显复杂,后期有一定维护难度,包括其他master-master replication 架构的缺点。
方案四:
MYSQL+REPLICATION+MHA
方案简介:
MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用。
在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,不影
响服务器性能,不改变现有部署,支持在线切换,从当前运行master切换到一个新的master上面,
只需要很短的时间,此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。在有高可用和数
据一致性要求的系统上,MHA 提供了有用的功能,当master crash后,MHA自动识别slave间
relay log events的不同,然后应用到不同的slave,最终所有slave都同步。
方案拓扑:
优点:
使用vip提供访问请求,有最好的数据一致性,master crash不会导致其它从库不一致性,故障自动
快速切换,方案较为成熟,可实现一主多从,支持读写分离。
缺点:
需3台及以上服务器,发生故障切转移后主程序自动退出,需排除故障后手动添加到ha集群再启动 MHA,维护难度较大。
MYSQL数据库高可用方案探究的更多相关文章
- MySQL数据库高可用方案
一.什么是高可用性: 高可用性=可靠性,它的本质就是通过技术和工具提高可靠性,尽可能长时间保持数据可用和系统运行,实现高可用性的原则,首先要消除单点故障,其次通过冗余机制实现快速恢复,还有就是实现容错 ...
- [转]MYSQL高可用方案探究(总结)
前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://bl ...
- 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进
本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...
- Oracle和MySQL的高可用方案对比【转】
关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...
- Windows版本redis高可用方案探究
目录 Windows版本redis高可用方案探究 前言 搭建redis主从 配置主redis-28380 配置从redis-23381 配置从redis-23382 将redis部署为服务 启动red ...
- MySQL MGR+ Consul之数据库高可用方案
背景说明: 基于目前存在很多MySQL数据库单点故障,传统的MHA,PXC等方案用VIP或者DNS切换的方式可以实现.基于数据库的数据强一致性考虑,采用MGR集群,采用consul服务注册发现 ...
- (转)mysql数据库高可用高扩展性架构方案实施
http://shanhu.blog.51cto.com/1293405/1212605-----mysql数据库高可用高扩展性架构方案实施
- 分布式数据存储 - MySQL主从复制高可用方案
前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...
- docker搭建数据库高可用方案PXC
前言 本方案主要目的是学习, 该方案不太合适于企业项目 是什么? 白话点, 是个提供了必要环境的虚拟机(类似于java的导入部分包一样和c++的头文件差不多), 所以它比普通的VMWare或者Virt ...
随机推荐
- Alpha(6/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- Alpha(3/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- staff
staff英 [stɑ:f] 四大服. 美 [stæf] n.参谋;全体职员;管理人员;权杖adj.职员的;行政工作的;参谋的;作为正式工作人员的v.在…工作;为…配备职员;任职于第三人称单数: st ...
- 51nod 算法马拉松30
题目链接 附一个代码地址 A,这个容斥一下就好了 C,rxd大爷给讲的,首先如果分三种情况(成环,正在比配环,未访问)讨论复杂度是\(3^n * n ^ 2\)的,但是对于每一个环,都可以直接枚举环的 ...
- js数组根据指定字段(true or false)排序
const obj = [ {name:'1',bind:true}, {name:'2',bind:false}, {name:'3',bind:true}, {name:'4',bind:fals ...
- [Python]网络爬虫( 连载:大牛汪海 )
汪海个人博客:http://blog.callmewhy.com/ Python爬虫专栏,汪海专栏 Python爬虫入门教程 简单的介绍如何使用Python的相关模块如urllib2来实现网络爬虫的基 ...
- U盘安装Ubuntu 14.04 LTS
1.下载Ubuntu14.04 LTS 从Ubuntu官网下载->http://releases.ubuntu.com/14.04/ 2.将Ubuntu14.04安装到U盘 下载U盘系统安装工具 ...
- NineveGL引擎学习笔记
- Java 反射 调用私有构造方法
单例类: package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.p ...
- Node辅助工具NPM&REPL
Node辅助工具NPM&REPL NPM和REPL是node的包管理器和交互式解析器,可以有效提高开发者效率 NPM npm(Node Package Manager)是node包管理器,完全 ...