行业案例:美团MySQL集群从MMM到MHA+Zebra以及MHA+Proxy的演进.pdfVIP

行业案例:美团MySQL集群从MMM到MHA+Zebra以及MHA+Proxy的演进.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些

创新。同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划

和展望。

MMM

在2015年之前,美团点评(点评侧)长期使用MMM(Master-Masterreplicationmanagerfor

MySQL)做数据库高可用,积累了比较多的经验,也踩了不少坑,可以说MMM在公司数据库高速发展

过程中起到了很大的作用。

MMM的架构如下。

如上所示,整个MySQL集群提供1个写VIP(VirtualIP)和N(N=1)个读VIP提供对外服务。每个

MySQL节点均部署有一个Agent(mmm-agent),mmm-agent和mmm-manager保持通信状态,定

期向mmm-manager上报当前MySQL节点的存活情况(这里称之为心跳)。当mmm-manager连续多

次无法收到mmm-agent的心跳消息时,会进行切换操作。

mmm-manager分两种情况处理出现的异常。

1.出现异常的是从节点

mmm-manager会尝试摘掉该从节点的读VIP,并将该读VIP漂移到其它存活的节点上,通过

这种方式实现从库的高可用。

2.出现异常的是主节点

如果当时节点还没完全挂,只是响应超时。则尝试将DeadMaster加上全局锁(flushtables

withreadlock)。

在从节点中选择一个候选主节点作为新的主节点,进行数据补齐。

数据补齐之后,摘掉DeadMaster的写VIP,并尝试加到新的主节点上。

将其它存活的节点进行数据补齐,并重新挂载在新的主节点上。

主库发生故障后,整个集群状态变化如下:

mmm-manager检测到master1发生了故障,对数据进行补齐之后,将写VIP漂移到了master2上,应

用写操作在新的节点上继续进行。

然而,MMM架构存在如下问题:

VIP的数量过多,管理困难(曾经有一个集群是1主6从,共计7个VIP)。某些情况下会导致集群大

部分VIP同时丢失,很难分清节点上之前使用的是哪个VIP。

mmm-agent过度敏感,容易导致VIP丢失。同时mmm-agent自身由于没有高可用,一旦挂掉,会

造成mmm-manager误判,误认为MySQL节点异常。

mmm-manager存在单点,一旦由于某些原因挂掉,整个集群就失去了高可用。

VIP需要使用ARP协议,跨网段、跨机房的高可用基本无法实现,保障能力有限。

同时,MMM是Google技术团队开发的一款比较老的高可用产品,在业内使用的并不多,社区也不活

跃,Google很早就不再维护MMM的代码分支。我们在使用过程中发现大量Bug,部分Bug我们做了修

改,并提交到开源社区,有兴趣的同学可以参考这里(/cenalulu/mysql-mmm)。

MHA

针对于此,从2015年开始,美团点评对MySQL高可用架构进行了改进,全部更新为MHA,很大程度上

解决了之前MMM遇到的各种问题。

MHA(MySQLMasterHighAvailability)是由Facebook工程师YoshinoriMatsunobu(https://www.p

/live/mysql-conference-2014/users/yoshinori-matsunobu)开发的一款MySQL高可用软

件。从名字就可以看出,MHA只负责MySQL主库的高可用。主库发生故障时,MHA会选择一个数据最

接近原主库的候选主节点(这里只有一个从节点,所以该从节点即为候选主节点)作为新的主节点,并

补齐和之前DeadMaster差异的Binlog。数据补齐之后,即将写VIP漂移到新主库上。

整个MHA的架构如下(为简单起见,只描述一主一从):

这里我们对MHA做了一些优化,避免一些脑裂问题。

比如DB服务器的上联交换机出现了抖动,导致主库无法访问,被管理节点判定为故障,触发MHA切

文档评论(0)

Leosen + 关注
实名认证
文档贡献者

很懒

1亿VIP精品文档

相关文档