介绍一些常用的高可用MySQL高可用性解决方案
1.主从复制解决方案
这是Mysql自带的主从复制解决方案,数据同步采用的方法是Mysql application技术。Mysql applicaion其实就是一个日志的复制过程,有一个主服务器,同时又有一个从服务器从主服务器上拉起二进制日志文件,从服务器将二进制的日志文件解析程sql语句执行,从而保持主服务与从服务器之间的数据一致性。
而对于failover(服务器死机或出现故障时,自动切换到其他备用服务器),则需要手工操作failover,手工将从服务器切换为主服务器 。这种解决方案可以实现90%的SLA.
2. MMM高可用解决方案(Master-Master replication Manager for Mysql)
基于MySQL replication主主复制高可用解决方案,可以实现99%的SLA
3. Heartbeat/SAN高可用解决方案
这是一个基于软硬件的解决方案,在这个方案中处理failover的方式是高可用集群软件Heartbeat,它监控集群中的各个节点的状态,当集群中的节点出现故障时,自动调用其他节点提供服务。
在数据共享方面,通过SAN来共享数据,在正常状态下,集群节点将挂载存储设备进行数据读写,而当集群出现故障时,Heartbeat将通过一个仲裁器来将主节点挂载的存储设备进行释放,然后再备用节点上挂载存储,对外继续提供服务。这种方案可以实现99.99%的SLA,但是存在脑裂的可能性
4. Heartbeat/DRBD高可用解决方案
failover仍使用Heartbear方案,而数据共享方面采用DRBD软件,但同样也存在脑裂问题,这种方案可以实现99.9%的SLA
5 . Mysql cluster高可用解决方案
Mysql Cluster是有一组服务节点构成,每个服务器上运行着多个进程 包括mysql服务器,NDB cluster的数据节点.Mysql Cluste可以达到99.999%的SLA
6.通过Keepalived搭建Mysql双主模式的高可用集群系统
Mysql Replication是Mysql自身提供的一个主从复制功能,其实就是一台Mysql服务器(slave)从另一台Mysql服务器上复制日志,然后解析日志并应用到自身的过程,
Mysql Replication是单向、异步复制
基本复制过程为:Maste服务器将更新写入二进制日志文件。这些日志文件可以发送到Slave服务器进行更新,当一台Slave服务器连接Master服务器时,它从Maste服务器日志读取上一次更新的成功的位置。然后Slave服务器开始接收上一次更新后发生的所有更新,所有更新完成后,将等待主服务器通知新的更新。
Mysql Replication支持链式复制,Slave服务器还可以再链接其他Slave服务器
在Mysql主从复制中,所有表的更新必须在Master服务器上进行,Slave服务器仅支持查询操作。
Mysql replication的优点:
- 增加了Mysql应用的健壮性
- 可以将Mysql读、写操作分离,写操作只在Master服务器上进行,而读操作在Slave服务器上进行,减少系统负荷。
- 网络环境较好时,Slave服务器同步数据较快,基本可以达到实时同步。Slave在同步过程中不会干扰Master服务器
Mysql Replication支持多种形式的复制方式
- 基于语句的复制
Mysql默认采用基于语句的复制,效率高。在Master上执行过的sql语句,在Slave服务器上执行同样的语句。而一旦发现没法精确复制时,则采用基于行的复制 - 基于行的复制
基本方式为:把Mysql服务器上改变的内容直接复制过去,而不是把sql语句执一遍 - 混合类型的复制
两种复制方式的组合,默认采用基于语句的复制,如果基于语句的复制无法精确完,则采用基于行的复制。
Mysql Replication实现原理
Master Replication是从一个Master复制到一台或多台Slave的异步过程,在Maste与Slave的整个复制过程主要有3个进程来完成,其中一个IO进程在Master端,另两个进程在(SQL线程和IO线程)在Slave端
详细的实现过程
- 在Master’服务器上打开Mysql 的Binary log(产生二进制日志文件)的功能
- Slave的IO进程连接上Master
- Master接受到来自Slave的IO线程请求后,通过自身的IO线程,根据请求信息读取指定位置的日志文件,并将其返回给Slave端的IO线程。返回端除了包含日志信息外,还包含MASTER端对应的Binary log文件名称以及在Binary log的位置。
- Slave的IO进程接收到消息,将获取的日志文件内容写入Slaver端的Relay log文件。
- Slave的SQL线程在Realy log文件新增内容后,马上解析Relay log的内容,并将日志内容转化为Sql语句
Mysql Replication常用架构
Mysql Replication技术有多种实现架构
- 一主一从,最常见
- 一主多从,一个Master,两个或两个以上Slave,写操作频繁,查询量大
- 主主互备,两台Mysql Server互相将对方作为自己的Master和Slave,主要用于写操作要求比较高的环境中,避免单点故障。
- 双主多从,两台Mysql Server服务器双主互备,再加多台Slave服务器
Mysql Replication遵循的规则
1. 同一时刻只有一台Master服务器进行写操作
2. 一台Master服务器可以有多台Slave服务器
3. Master服务器和Slave服务器都要保证自己的Server ID一致
4. 一台Slave服务器可以从Master服务器上获取信息,传递给其他Slave服务器。
Mysql主主互备模式架构
设计思路:利用Mysql Replication技术将两台Mysql Server作为互相将对方作为自己的Master和Slave来进行复制,实现高可用架构中的数据同步功能。利用keeapalived实现mysql 的自动failover.
s