iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >用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://www.lsjlt.com/news/36145.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    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数据库实现高可用架构之MHA的实战
    目录一、MySQLMHA介绍1.1什么是MHA1.2MHA的组成1.3MHA的特点二、MySQLMHA搭建1.MHA架构部分2.故障模拟部分3.实验环境三、实验步骤1、关闭防火墙和S...
    99+
    2024-04-02
  • 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
  • MySQL高可用架构之MHA的原理分析
    这篇文章主要介绍了MySQL高可用架构之MHA的原理分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MHA角色部署MHA 服务有两种角色,...
    99+
    2024-04-02
  • MySQL MHA高可用架构部署配置实例是怎样的
    本篇文章给大家分享的是有关MySQL MHA高可用架构部署配置实例是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MHA高可用架构部署配...
    99+
    2024-04-02
  • 企业中MySQL主流高可用架构实战三部曲之MHA
    老张最近两天有些忙,一些老铁一直问,啥时更新博文,我可能做不到天天更新啊,但保证以后一有空就写一些干货知识分享给大家。我们如果想要做好技术这项工作,一定要做到理论与实践先结合。我一个曾经被数据库虐得体无完肤...
    99+
    2024-04-02
  • MySQL高可用方案MHA怎么用
    这篇文章主要为大家展示了“MySQL高可用方案MHA怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL高可用方案MHA怎么用”这篇文章吧。 MyS...
    99+
    2024-04-02
  • MySQL高可用架构中MHA的本质以及如何部署
    这篇文章将为大家详细讲解有关MySQL高可用架构中MHA的本质以及如何部署,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL高可用架构之MHA1、关于...
    99+
    2024-04-02
  • MHA高可用架构部署以及配置(详细)
    目录 一、MHA概述 1、简介 2、MHA特点 3、何为高可用 4、故障切换过程 二、MHA高可用架构部署 1、架构图 2、 实验环境:需要四台Centos7服务器 3、实验部署 3.1、master、slave1、slave2安装mysq...
    99+
    2023-09-04
    数据库 mysql 运维
  • MySQL高可用架构之MaxScale实践
        本次安装部署基于MHA已部署的情况下,只部署MaxScale,并且采用的是rpm包安装     MaxScale是ma...
    99+
    2024-04-02
  • MySQL中怎么实现集群高可用架构
    今天就跟大家聊聊有关MySQL中怎么实现集群高可用架构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL+DRDB架构通过DRBD基于bloc...
    99+
    2024-04-02
  • MySQL高可用方案MHA如何部署
    这篇文章将为大家详细讲解有关MySQL高可用方案MHA如何部署,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MHA(Master High Availability)是一...
    99+
    2024-04-02
  • 配置MySQL高可用集群MHA
    配置MySQL高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址 ...
    99+
    2024-04-02
  • MySQL之高可用架构详解
    目录引言MySQL高可用一主一备:MySQL主从同步的几种模式:总结引言 “高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务...
    99+
    2024-04-02
  • mysql mha高可用配置与详解
    三台mysql网段配置为10.0.0.51 10.0.0.52 10.0.0.53安装mysql1.2.1安装包准备#创建安装包存放目录[root@mysql-db01 ~]# mkdir /home/cc...
    99+
    2024-04-02
  • k8s高可用架构
    概述...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作