高可用性需要解决的两个问题:
一是,如何实现数据共享或同步数据
二是,如何处理failover(failover指当服务器死机或出现错误时可以自动切换到其他备用服务器,不影响服务器上业务系统的运行)
1,主从复制解决方案
数据同步方法采用的是MySQL replication技术
一个日志复制过程
在复制过程中一台服务器充当主服务器,一台或多台充当从服务器
🔺从服务器到主服务器拉取二进制日志文件,再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的一致性
问题:
MySQL replication技术仅仅提供日志的同步执行功能
从服务器只提供读操作
主服务器发生故障时,必须手动处理failover(通常做法是将一台从服务器改为主服务器)
2,MMM高可用解决方案
MMM:MySQL主主复制管理器
主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件
典型的应用是双主多从架构
通过MySQL replication技术实现两台服务器互为主从,任何时候只有一个节点可以写入,避免多点写入的数据冲突
主节点故障时,可以立刻监控到,然后服务▲自动切换到另一个主节点
3,Heartbear/SAN高可用解决方案
处理failover的方式是高可用集群软件Heartbeat
在数据共享方面,通过SAN存储来共享数据
当集群故障时,Heartbeat会首先通过一个仲裁设备将主节点挂载的存储设备释放,然后再备用节点上挂载存储,接着启动服务,以实现数据共享和同步
4,Heartbeat/DRBD高可用解决方案
5,MySQL Cluster高可用解决方案
附:
通过keepalived搭建MySQL双主模式的高可用集群系统
(1)MySQL Replication介绍
一台MySQL服务器从另一台MySQL服务器上复制日志,然后解析日志并应用到自身的过程
单向、异步复制
基本复制过程:
Master服务器首先将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志的循环;当一台Slave服务器连接Master服务器时,从Master服务器日志中读取上一次成功更新的位置,然后Slave服务器开始接收上一次完成更新后所发生的更新,更新完成后再等在服务器通知新的更新
支持链式复制,级Slave服务器下还可以在链接Slave服务器,同时Slave服务器可以充当Master服务器角色
在MySQL主从复制中,所有表的更新必须在Master服务器上进行,Slave服务器仅能提供查询操作
优点:
增加了MySQL应用健壮性,如果Master服务器出现问题,可以随时切换到Slave服务器
可以将MySQL读写操作分离,写操作只在Mater服务器完成,读操作可以在多个Slave服务器完成
在网络好喝业务量不是很大的环境中,同步数据非常快,基本可以达到试试同步
复制方式:
基于语句的复制(默认,效率很高)
基于行的复制
混合类型复制
(2)实现原理
是从一个Master复制到一台或多台Slave的异步过程
组要有三个线程,IO线程一个在Master端,SQL线程和IO线程在Slave段
(3)常用架构
一主一从
一主多从
主主互备(两台Mysql Server互相将对方作为自己的Master,自由同时做对方色Slave)
双主多从
(4)主主互备模式架构
采用Keepalived来实现MySql的自动failover