`
CtripMySQLDBA
  • 浏览: 57281 次
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL高可用方案:基于MHA实现的自动故障转移群集

阅读更多

常用MySQL不同高可用方案的对比(下图来自官方手册)

 

 
能实现自动数据库故障转移的方案只有MySQL Cluster和 DRBD+Heartbeat,这也是两种不依赖Replication的HA方案。

 

但是,MySQL Cluster(NDB)配置维护复杂,不像Replication一样稳定易用,大部分公司可能不会考虑这一方案;而DRBD的额外性能消耗又比较大,约为20%—30%,在可用性上大打折扣。

 

因此,对于我们来说,在Replication的基础上设计HA方案是最好的选择。

 

MySQL支持单向、异步的复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。MySQL5.5 引入了一种半同步复制功能,该功能可以确保主服务器和访问链中至少一台从服务器之间的数据一致性和冗余。

 

由于MySQL复制的异步性(最多半同步),所以,简单的MySQL Replication + Heartbeat的HA架构只能完成IP的故障转移,而不能完成数据库的故障转移,即不能保证数据一致性。

 

怎样在故障转移时保证复制架构中的数据一致性

1 找出同步最成功的一台从服务器(也就是与主服务器数据最接近的那台从服务器)。
2 如果主机还能够访问,从主服务器上找回最新从机与主机间的数据差异。
3 在每一台从服务器上操作,确定他们缺少哪些events,并分别进行补充。
4 将最新的一台从服务器提升为主服务器后,将其它从服务器重新指向新的主服务器。

 

以上这些MHA已经可以实现了。

MHA(Master HA)是一款开源的MySQL的高可用工具,能在MySQL主从复制的基础上,实现自动化主服务器故障转移。

不过,虽然MHA试图从宕机的主服务器上保存二进制日志,但并不是总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失最新数据。


使用半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此他们彼此保持一致性。

 

Auto Failover Cluster实现方案
在Replication的基础上,MHA能够帮助我们实现数据库的故障转移,但是对于一套完善的自动故障转移群集来说,这是远远不够的,我们还需要实现以下需求:
1 当群集内的数据库进行故障转移时,对外提供服务的虚拟IP也进行转移;
2 MHA管理进程需要以后台守护进程的方式运行,并有监控机制保证MHA管理进程的正常运行;
3 有监控机制保证当主机出现故障时,MHA能确定进行成功的Failover;
4 当故障主机恢复后,能重新回到群集中,并成为新的Slave,自动实现重新同步;
5 由于主机和从机上备份策略不同,进行故障转移后,自动调整cron中的调度(例如全备份)。

 

完整的自动故障转移群集包括:

  • MySQL Replication 实现:数据同步
  • MHA(MasterHA) 实现:心跳检测和数据库故障转移
  • Heartbeat的IP管理模块 实现:IP故障转移
  • Perl实现的自定义管理和监控脚本 实现:自动重新同步和保障Cluster正常工作

架构图

 

 
完成后的自动故障转移集群能按照计划实现我们的需求,在内部测试环境的测试结果如下(数据库服务器为4核+8G内存的vmware虚拟机,安装centos5.8+MySQL5.5.21):

 

测试场景

failover耗时

保证数据完整性

自动重新同步数据

主机MySQL服务停止响应

< 15seconds

主机CentOS停止响应

< 40seconds

复制延迟(未传送日志500M)+MySQL服务停止响应

4.2~4.5m

复制延迟(未执行日志500M)+MySQL服务停止响应

1.9~2.1m

复制延迟(未传送日志500M)+主机CentOS停止响应

< 40seconds

数据丢失

由于数据丢失,无法自动重新同步

复制延迟(未执行日志500M)+主机CentOS停止响应)

2.5~2.7m


目前自动故障转移群集已在我们的生产环境应用近半年,并多次进行切换演练,运行良好。


  • 大小: 57.8 KB
  • 大小: 63 KB
  • 大小: 63.7 KB
  • 大小: 64.6 KB
1
1
分享到:
评论
6 楼 carlfeng 2013-04-25  
   楼主IP故障转移,是通过什么方式实现的 ? 是这个master_ip_failover_script,期待详细部署文档
5 楼 CtripMySQLDBA 2013-04-25  
jinnchang 写道
楼主能提供下具体的详细方案吗?可以以一种通用的形式展现出来,以免设计公司隐私。

可以啊,我们后面整理一下发出来。
4 楼 jinnchang 2013-04-24  
楼主能提供下具体的详细方案吗?可以以一种通用的形式展现出来,以免设计公司隐私。
3 楼 javaboy2010 2013-04-23  
很不错的文章! 
2 楼 CtripMySQLDBA 2013-04-22  
不好意思哦,我们的mysql都是运行在linux环境的,对Windows平台的工具没什么研究
1 楼 游传聪 2013-04-22  
请教下楼主,Windows平台是否有类似MHA的工具实现自动故障转移呢

相关推荐

    企业级mysql基于MHA的高可用集群部署

    基于MHA的企业级MySQL高可用集群部署是指使用MHA(Master High Availability)软件来实现MySQL数据库的高可用性和自动故障切换。MHA是一套优秀的高可用软件,由日本DeNA公司开发,能在 MySQL 高可用性环境下实现自动...

    实战基于MHA方式实现MySQL高可用

    MHA为MySQL高可用提供了一种有效解决方案,通过自动化处理故障转移,降低了运维复杂度。然而,使用MHA的同时,也要注意其可能存在的风险,如数据不一致、网络延迟等,因此,合理规划和严谨的运维实践是保证高可用性...

    MySQL高可用方案 MHA

    MySQL高可用方案 MHA MySQL高可用方案 MHA MySQL高可用方案 MHA

    mysql+lvs+keepalive+mha高可用

    在本教程中,我们将探讨一种基于`mysql`、`lvs`(Linux Virtual Server)、`keepalived`以及`MHA`(Master High Availability)的解决方案,这种方案可以实现VIP(Virtual IP)漂移,有效防止因单点故障导致的服务...

    12.4: MHA集群概述 、 部署MHA集群 、 总结和答疑.docx

    MHA(Master High Availability)是一种基于 MySQL 的高可用性解决方案,旨在提供高可用性和自动故障转移的 MySQL 集群解决方案。下面是 MHA 集群概述和部署的知识点: 一、MHA 集群概述 1. MHA 集群架构:MHA ...

    MySQL高可用之MHA的实现及大规模运维实践

    MHA(Master High Availability Manager)是实现MySQL高可用性的一种解决方案,它的主要目的是为了简化MySQL数据库的故障转移和故障恢复流程。 MHA由日本工程师Yoshinori Matsunobu所开发,是一个用于MySQL的高可用...

    基于MHA的MySQL高可用方案研究.pdf

    MHA是一款专为MySQL设计的高可用性工具,能在30秒内自动完成故障转移,确保数据的一致性,并最小化服务中断时间。MHA系统由两部分组成:MHA Manager和MHA Node。Manager节点负责监控master服务器的状态,当检测到...

    MySql数据库MHA高可用详细配置文档

    MHA(Master High Availability)是一种用于MySQL集群的高可用性解决方案,它能够在主数据库发生故障时自动将从库提升为主,以最小化服务中断时间。本文将详细介绍MHA的配置步骤以及与之相关的MySQL主从复制和...

    (带目录版)MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册

    ### MySQL LVS+Keepalived+MHA 高可用群集应用部署操作手册知识点解析 #### MHA 架构介绍与工作原理 - **MHA(Master High Availability)概述** - MHA 是一套用于MySQL高可用环境下的故障切换和主从提升方案,由...

    mysql-MHA高可用

    MySQL高可用性解决方案MHA(Master High Availability)是一种在MySQL环境中实现主从复制故障自动切换的工具。MHA由两部分组成:MHA Manager和MHA Node。在给定的文件列表中,我们看到`mha4mysql-manager-0.56-0.el6...

    MySQL高可用架构MHA软件包及脚本

    MySQL高可用架构(MHA,Master High Availability)是一款用于MySQL集群的开源工具,旨在...总的来说,MHA是MySQL高可用性解决方案的重要组成部分,通过合理配置和使用,可以极大地提升数据库服务的稳定性和用户体验。

    MySQL高可用学习笔记mysqlrouter_MHA.docx

    MySQL Router 是一个提供高可用和负载均衡的工具,而 MHA 是一个提供高可用和自动failover 的工具。下面我们将逐步讲解 MySQL Router 和 MHA 的配置和测试步骤。 一、MySQL Router 的安装和配置 MySQL Router 是一...

    MySQL高可用mha-0.56

    MySQL高可用性解决方案MHA(Master High Availability)是一款开源工具,专为MySQL数据库设计,用于在主从复制环境中实现故障切换和数据恢复。MHA由两个主要组件组成:MHA Manager和MHA Agent。 MHA Manager是整个...

    mysql-mha高可用

    MySQL-MHA(MySQL High Availability)是一种用于MySQL集群的高可用性解决方案,旨在提供数据库的自动故障切换和数据恢复功能。MHA是由Google开发并开源的一个工具,它结合了Master Heartbeat(心跳检测)和MySQL...

    MySQL高可用架构MHA 搭建测试文档_v1.docx

    MHA(Master High Availability)是一种开源解决方案,专门用于管理MySQL主从复制集群的高可用性。配合Keepalived,可以实现快速故障切换和网络负载均衡,确保数据的一致性和服务的连续性。 ### MHA概述 MHA由...

    MySQL MHA高可用实战安装部署中文指南

    MHA是一位 日本 MySQL 大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的...因此MHA是众多使用MySQL数据库企业高可用的不二选择,它简单易用,功能强大,实现了基于MySQL replication架构的自动主从故障转移!

    基于MHA的MySQL的高可用详细总结文档

    MHA是由日本Mysql专家用Perl写的一套Mysql故障切换方案以保障数据库的高可用性,它的功能是能在0-30s之内实现主Mysql故障转移(failover),MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回...

Global site tag (gtag.js) - Google Analytics