MySQL数据库做为最基础的数据存储服务之一,在整个系统中有着很是重要的地位,所以要求其具有高可用性是无可厚非的。有不少解决方案能实现不一样的SLA(服务水平协定),这些方案能够保证数据库服务器在硬件或软件出现故障时服务继续可用。
web
高性能性须要解决的主要有两个问题,即如何实现数据共享或同步数据,另外一个是如何处理failover,数据共享通常的解决方案是经过SAN(Storage Area Network)来实现,而数据同步能够经过rsync软件或DRBD技术来实现;failover的意思就是当服务器死机或出现错误时能够自动切换到其余备用的服务器,不影响服务器上业务系统的运行。本文重点介绍一下目前比较成熟的Mysql高性能解决方案。sql
一、主从复制解决方案数据库
这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是一个日志的复制过程,在复制过程当中一个服务器充当主服务器,而一个或多个其余服务器充当从服务器,简单说就是从服务器到主服务器拉取二进制日志文件,而后再将日志文件解析成相应的SQL在从服务器上从新执行一遍主服务器的操做,经过这种方式保证数据的一致性。服务器
MySQL replication技术仅仅提供了日志的同步执行功能,而从服务器只能提供读操做,而且当主服务器故障时,必须经过手动来处理failover,一般的作法是将一台从服务器更改成主服务器。这种解决方案在必定程度上实现了MySQL的高可用性,能够实现90.000%的SLA。网络
为了达到更高的可用性,在实际的应用环境中,通常都是采用MySQL replication技术配合高可用集群软件来实现自动failover,这种方式能够实现95.000%的SLA。8.2节会重点介绍经过KeepAlived结合MySQL replication技术实现MySQL高可用构架的解决方案。架构
二、MMM高可用解决方案app
MMM是Master-Master Replication Manager for MySQL的缩写,全称为MySQL主主复制管理器,它提供了MySQL主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。在MMM高可用方案中,典型的应用是双主多从架构,经过MySQL replication技术能够实现两个服务器互为主从,且在任什么时候候只有一个节点能够被写入,避免了多点写入的数据冲突。同时,当可写的主节点故障时,MMM套件能够马上监控到,而后将服务自动切换到另外一个主节点,继续提供服务,从而实现MySQL的高可用。性能
MMM方案是目前比较成熟的MySQL高可用解决方案,能够实现99.000%的SLA。8.3节会重点介绍经过MMM实现MySQL高可用解决方案。spa
三、Heartbeat/SAN高可用解决方案日志
此方案是借助于第三方的软硬件实现的,在这个方案中,处理failover的方式是高可用集群软件Heartbeat,它监控和管理各个节点间链接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其余节点启动集群服务。
在数据共享方面,经过SAN(Storage Area Network)存储来共享数据,在正常状态下,集群主节点将挂载存储进行数据读写,而当集群发生故障时,Heartbeat会首先经过一个仲裁设备将主节点挂载的存储设备释放,而后在备用节点上挂载存储,接着启动服务,经过这种方式实现数据的共享和同步。这种数据共享方式实现简单,可是成本较高,而且存在脑裂的可能,须要根据实际应用环境来选择。这种方案能够实现99.990%的SLA。
四、Heartbeat/DRBD高可用解决方案
这种高可用解决方案也是借助于第三方的软硬件实现的,在处理failover的方式上依旧采用Heartbeat,不一样的是,在数据共享方面,采用了基于块级别的数据同步软件DRBD来实现。
DRBD即Distributed Replicated Block Device,是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和SAN网络不一样,它并不共享存储,而是经过服务器之间的网络复制数据。这种方案实现起来稍微复杂,同时也存在脑裂的问题,能够实现99.900%的SLA。
五、MySQL Cluster高可用解决方案
MySQL Cluster由一组服务节点构成,每一个服务节点上均运行着多种进程,包括MySQL服务器、NDB Cluster的数据节点、管理服务器,以及(可能)专门的数据访问程序。此解决方案是MySQL官方主推的技术方案,功能强大,可是因为实现较为繁琐,配置麻烦,实际的企业应用并很少。MySQL Cluster的标准版和电信版能够达到99.999%的SLA。
若是想深刻体验LINUX系统的新手,也能够先下载一个方德Linux软件中心试用一下。