返回顶部
首页 > 资讯 > 数据库 >用MHA架构实现MySQL高可用方法
  • 752
分享到

用MHA架构实现MySQL高可用方法

2024-04-02 19:04:59 752人浏览 泡泡鱼
摘要

下面一起来了解下用MHA架构实现Mysql高可用方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望用MHA架构实现mysql高可用方法这篇短内容是你想要的。Mysql复制是异步或者半同步的。当maste

下面一起来了解下用MHA架构实现Mysql高可用方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望用MHA架构实现mysql高可用方法这篇短内容是你想要的。

Mysql复制是异步或者半同步的。当master故障时,一些slave可能并没有收到最新的relay log,也就意味着每个slave可能处于不同的状态。手动处理这些一致性问题是小事,因为不修复这些问题,就不能开始复制。但是手动修复这些问题,花费一个小时或更多的时间并不少见。

一主一从  

如果架构是一主一从,就不会出现一部分slave的状态落后于最新的slave的问题。当master出现故障,可以将应用的流量全部发送给新的master(原来的slave)。故障切换很容易解决。但是会有下面的问题。

首先,不能扩展读流量。在很多情况下,可能会运行一些重要的操作,比如备份、分析查询、批量处理。这可能会导致slave的性能问题。如果只要一个slave,当这个slave出现故障后,master必须处理所有这些流量。 

其次,可用性问题。如果master出现故障,只剩下一台服务(原来的slave成为主),就成为了单点故障问题。为了创建一个新的slave,需要在线备份,然后存储到新的slave上并立即启动slave。但是这些操作通常会花费数小时(甚至是不止一天才能完成复制)。在一些重要的应用上,可能忍受不了数据库这么长时间有单点故障问题。并且,在线备份会大大增加master的I/O负载,因此在高峰期进行备份是很危险的。

双主多从

双主多从也是常见的架构。如果当前的master出现故障,备用的master就会变为新master。大很多场景下,备用的master都配置为只读。 

但这不总是作为master故障切换解决方案运行的。当目前的master出现故障,余下的slave可能没有接收到全部的relay log,因此在slave之间解决一致性问题仍需要其它解决方案。 

如果不能忍受一致性问题并且还想立即启动服务。只需要将备用的master作为新的master,并且抛弃剩余的slave。之后再从这个新的master做线上备份创建新的slave。但是这个方法和前面提到的一主一从的发法有同样的问题。剩余的slave不能进行读扩展和进行冗余的目的。 

另外,使用双主(一个只读)并且每个master都至少有一个从也是可能的。

至少一个从可以进行复制,如果目前的master出现故障。但是事实上,很多使用者都不会采用这种架构,因为最大的缺点是复杂性。在这种架构中使用了三层复制。管理三层复制并不容易。例如,如果备用master出现故障,备用master的slave就无法继续进行复制。很多情况下,必须重新配置备用master和它的slave。重要的是,在这种架构中,必须要使用至少4台云服务器。 

心跳+DRBD 

使用心跳(Heartbeat)+DRBD+MySQL是非常常见的HA解决方案。但是这个解决方案有一些严重的问题。

第一个问题是开销,特别是想运行大量MySQL复制环境的时候。心跳+DRBD是主用/备用解决方案,因此需要一个不处理任何应用流量的被动(standby)master。被动云服务器不能被用来进行读扩展。通常,你至少需要4台MySQL服务,一个主动(active)master,一个被动(passive)master,两个slave。

第二个问题是停机。因为心跳+Heartbeat是active/standby集群,因此如果active server出现故障,故障恢复会发生在passive server上。这可能需要花费很长的时间,特别是没有用InnoDB插件。即使使用了InnoDB插件,只花费几分钟在passive server开始接收访问连接的情况并不常见。除了故障恢复时间,在故障恢复后,热身(warm-up)(填充数据到缓冲池)也要花费时间,因为在passive上,数据库/文件系统缓存是空的。在实际中,需要一个或更多额外的slave来处理足够的读流量。在warm-up期间,由于还粗是空的,因此写性能会显著下降。

第三个问题是写性能下降或一致性问题。为了保证active/passive高可用集群运行,在每次commit必须把事务日志(二进制日志和InnoDB日志)刷新到磁盘,因此必须设置innodb-flush-log-at-trx-cmmit=1和sync-binlog=1。但是sync-binlog=1会降低写性能,因为在当前的MySQL版本fsync()是连续的(如果sync-binlog是1,组提交就会打破)。大多数情况下,不会设置sync-binlog=1。但是如果sync-binlog=1没有设置,当active master故障,新的master(之前的passive server)可能会丢失已经被发送到slave上的二进制日志事件。假如,master出现故障,并且slave A接收到mysql-bin.00123的1500位置。如果binlog数据近刷新到1000位置到磁盘,新的master仅只有mysql-bin.00123到1000位置并且创建新的二进制文件mysql-bin.00124。如果出现这种情况,由于新的master没有mysql-bin.00123的1500位置,slave A就不能进行复制了。

第四个问题是复杂性。对于很多用户来说,安装/配置心跳和DRBD是不简单的。在很多部署环境,配置DRBD经常需要重建系统分区,这在很多情况下是不容易的。另外,也需要在DRBD和linux内核层有足够的经验。如果执行了一个错误的命令(比如在passive节点执行了drbd –overwrite-data-of-peer)非常容易损坏生产数据。当使用DRBD,一旦出现磁盘I/O层的问题,对于大多数DBA来说,解决这个问题是很难的。

MySQL集群 

MySQL集群真正实现了高可用解决方案,但是必须使用NDB存储引擎。大多数情况下都是使用InnoDB,因此无法使用MySQL集群的优势。

  • 半同步复制 

半同步复制大大降低了”binlog仅存在故障master上”的风险。这对避免数据的丢失有很大的帮助。但是半同步复制并没有解决一致性问题。半同步复制保证在master提交时至少有一个(并不是所有)slave接收到binlog事件。仍有可能一些slave没有接收到binlog事件。如果没有将最新的slave上的relay log应用到非最新的slave上,slave就无法处于一致性状态。

MHA解决了一致性问题,因此通过将半同步复制和MHA一起使用,几乎没有数据丢失和slave保持一直就能实现。

全局事务ID(GTID)

全局事务ID的目的和MHA想要实现的是基本相同的,但是全局事务ID包括的更多。MHA只能支持两层复制,但是全局事务ID可以支持很多层复制的环境,因此即使第二层复制故障了,仍然可以恢复三层复制。

从MySQL5.6开始就开始支持GTID了。oracle的官方工具mysqlfailover支持带GTID的master故障切换。从MHA的0.56版本开始,也支持基于GTID的故障切换。MHA会自动检测mysqld是否在GTID运行,如果GTID开启,MHA就实现带GTmysql数据库指定条数数据查询的主要方法ID的故障切换,如果没有启用,MHA就使用基于relay log的故障切换。

看完用MHA架构实现MySQL高可用方法这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。

您可能感兴趣的文档:

--结束END--

本文标题: 用MHA架构实现MySQL高可用方法

本文链接: https://lsjlt.com/news/36145.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 用MHA架构实现MySQL高可用方法
    下面一起来了解下用MHA架构实现MySQL高可用方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望用MHA架构实现MySQL高可用方法这篇短内容是你想要的。MySQL复制是异步或者半同步的。当maste...
    99+
    2024-04-02
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    99+
    2024-04-02
  • MySQL高可用架构之MHA
    一、MHA介绍   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可...
    99+
    2019-01-11
    MySQL高可用架构之MHA
  • MySQL高可用架构之MHA实践
    本文主要是描述MHA高可用快速部署步骤以及简单使用命令 1、下载安装包     mha 依赖包:        &n...
    99+
    2024-04-02
  • mysql MHA 高可用架构部署
    MHA简介:即Master High Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具, 该工具仅...
    99+
    2024-04-02
  • MySQL高可用架构之MHA架构全解
    目录一、介绍二、组成三、工作过程四、架构五、实例展示MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating m...
    99+
    2024-04-02
  • MySQL高可用之MHA架构企业实战
    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、...
    99+
    2023-08-17
    mysql 架构 数据库 MHA
  • MySQL高可用架构-MMM、MHA、MGR、PXC
    主从复制如何工作 在主库把数据记录到binlog(二进制日志)。 备库开IO线程把binlog复制到自己的relaylog(中继日志)。 备库读取中继日志,重放到备库上。 半同步复制 半同步复制可以确保备库拥有主库数据的拷...
    99+
    2015-08-21
    MySQL高可用架构-MMM MHA MGR PXC
  • MySQL数据库实现高可用架构之MHA的实战
    目录一、MySQLMHA介绍1.1什么是MHA1.2MHA的组成1.3MHA的特点二、MySQLMHA搭建1.MHA架构部分2.故障模拟部分3.实验环境三、实验步骤1、关闭防火墙和S...
    99+
    2024-04-02
  • 【赵强老师】MySQL高可用架构:MHA
    MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新...
    99+
    2019-11-27
    【赵强老师】MySQL高可用架构:MHA
  • Mysql实现MHA高可用
    环境: CentOS7.4 x 4 mha4mysql-manager x 1 mha4mysql-node x 3 node节点搭建一主双从 mha4mysql代码托管:https://co...
    99+
    2024-04-02
  • 【MySQL】【高可用】基于MHA架构的MySQL高可用故障自动切换架构
    基于MHA架构的MySQL高可用切换架构 环境: ​ CentOS7+MySQL 5.7 + GTID 业务系统:mainBusiness ​ node1 : 192.16...
    99+
    2024-04-02
  • Consul, ProxySQL and MySQL MHA架构高可用方案分享
    下文给大家带来关于Consul, ProxySQL and MySQL MHA架构高可用方案,感兴趣的话就一起来看看这篇文章吧,相信看完Consul, ProxySQL and MySQL MHA架构高可用...
    99+
    2024-04-02
  • 使用MHA实现MySQL高可用的轻松方法
    本文主要给大家介绍使用MHA实现MySQL高可用的轻松方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下使用MHA实现MySQL高可用的轻松方法吧。...
    99+
    2024-04-02
  • 简单了解MySQL高可用MHA架构知识
    下面一起来了解下MySQL高可用MHA架构知识,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL高可用MHA架构知识这篇短内容是你想要的。MHA软件介绍1.MHA软件是由MHA Manager(管...
    99+
    2024-04-02
  • MySQL高可用架构MHA的部署及测试
    不知道大家之前对类似MySQL高可用架构MHA的部署及测试的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL高可用架构MHA的部署及测试你一定会有所收获的。...
    99+
    2024-04-02
  • MySQL高可用架构之MHA的原理分析
    这篇文章主要介绍了MySQL高可用架构之MHA的原理分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MHA角色部署MHA 服务有两种角色,...
    99+
    2024-04-02
  • MySQL高可用架构:mysql+keepalived实现
    系统环境及架构#主机名    系统版本        mysql版本  ip地址 mysqlMaster    centos7.4        mysql5.7        192.168.1.42 ...
    99+
    2024-04-02
  • MySQL高可用架构-MMM、MHA、MGR、PXC(补小结,laoqi)
    小结 MMM是 MHA是 MGR是 主从复制如何工作 在主库把数据记录到binlog(二进制日志)。 备库开IO线程把binlog复制到自己的relaylog(中继日志)。 备库读取中继日志,重放到备库上。 半同步复制 半...
    99+
    2019-01-17
    MySQL高可用架构-MMM MHA MGR PXC(补小结,laoqi)
  • MHA高可用Mysql
    原文:https://www.cnblogs.com/ckh2014/p/14488889.html...
    99+
    2016-05-17
    MHA高可用Mysql 数据库入门 数据库基础教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作