Mysql高可用性框架(HA)

高度可用是从系统发生故障部分立即恢复,HA框架都包含四个重要组件,协同工作实现可恢复性。

基础设施和数据冗余

服务高可用性,需确保基础架构冗余,服务应有最新数据冗余,在主服务故障时接管。

故障检测和纠错机制

实时检测影响可用性的主系统,重视任何部分发生的故障,要求框架能在发生故障的系统上采取纠错,将故障移到备用系统。

故障转移机制

将发生故障的服务转移到备用服务,故障转移机制须能识别最合适的备用服务,并升级为主服务。

应用程序/用户重定向机制

DNS映射或虚拟IP组件,提供重定向机制。

MySQL HA

将3个节点设成主从模式,使用MySQL半同步复制,作为基础架构提供数据冗余机制。

异步复制

主库将已提交事务写入binlog后,返回成功给应用,该模式不保证已提交事务传递到各个slave,并被成功应用。

全同步复制模式

当主库提交一个事务,会等待事务被传递到所有slave上,且所有slave应用该事务,主库得到反馈后,返回事务成功通知。

半同步复制/Semisynchronous Replication

异步模式不等主库事务在slave落盘,不能保证数据安全性。

全同步模式等待所有slave,确认已提交事务被成功应用,导致事务处理延时。

Semisynchronous采用较折中方案,确保已提交事务至少在两台机器上落盘,然后,给客户端返回事务成功。

Corosync和Pacemaker提供故障检测,纠正和故障转移机制。

Corosync

Corosync集群引擎是能在应用程序中实现高可用性。

Pacemaker

开源高可用性集群堆栈,ClusterLabs堆栈适合小型和大型部署的群集服务。

使用Corosync、Pacemaker、DRBD、ScanCore实现集群。

DNS映射或虚拟IP组件,提供应用程序和用户重定向。

总结

Corosync

Corosync为节点提供通信,保证节点间消息传递的可靠。

形成节点的集群环,通过集群成员资格跟踪,决定加入和离开集群的节点。

Corosync与pacemaker合作,对节点可用性进行沟通,以便pacemaker做出恰当决策。

Pacemaker

集群资源管理器(CRM), pacemaker通过corosync接口检测和处理节点级故障,确保MySQL在集群上高可用。

通过与资源代理(RA)合作,检测和处理MySQL故障。

Pacemaker通过启动、停止、监视、提升、降级操作,配置管理MySQL资源。

Resource Agent

资源代理充当MySQL和Pacemaker间的接口。

实现启动、停止、升级、降级、监视pacemaker调用操作。

Percona实现Percona Replication Manager(PRM)全功能资源代理。

PRM:

https://github.com/Percona-Lab/pacemaker-replication-agents/blob/master/agents/mysql_prm_gtid
https://github.com/Scalegrid/percona-pacemaker-agents/blob/master/agents/mysql_prm_semisync

DNS映射(DNS Mapping Component)

客户端使用主DNS名称连接MySQL服务器。

通过管理DNS名称到当前主服务器IP地址映射,可确保客户端不必更改其连接描述符或属性,完成一个故障转移。

高可用性

服务在一段时间内,运行的时间百分比。

通常表示为一系列9,如下显示一年内的停机时间和可用性。

可用性 %     停机时间

90%(“ 一个9 ”)    36.53天

99%(“ 两个9 ”)    3.65天

99.9%(“ 三个9 ”)    8.77小时

99.99%(“ 四个9 ”)    52.60分钟

99.999%(“ 五个9 ”)    5.26分钟

99.9999%(“ 六个9 ”)    31.56秒

若服务无法承受每年超过几分钟的停机时间,说明该服务需具有99.999%的高可用性。