最全面的MySQL高可用方案

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

85e23dd7aa3fc9a9975bd85a13ebf4ae.png

高可用是数据库永恒的话题,高可用方案也是最受数据库爱好者关注的重点技术之一。在MySQL二十多年的发展历程中,针对MySQL的高可用方案百花齐放,各具特色,这也是这款开源数据库最能让人着迷的地方。例如,早些年著名的MMM、MHA等等。随着MySQL官方的不断发力,在基于MySQL复制的基础上,推出了一系列的高可用方案,例如,主从半同步复制、InnoDB ReplicaSet、组复制(MGR)、InnoDB Cluster,及目前最新的InnoDB ClusterSet。

在这一篇文章里,将向各位读者介绍各种方案的优缺点,及适用场景。在介绍各种方案之前,读者首先必须了解MySQL复制功能,MySQL的高可用方案几乎全部是基于MySQL复制实现的。

MySQL的复制功能(之前叫做Master Slave replication,现在改为 Source Replica replication)。MySQL能够产生一个二进制日志(binlog),当MySQL开启该功能后,能够将MySQL服务器所产生的全部事件记录在日志内。MySQL的复制功能将binlog传递到另外一台服务器(可以将其称之为从服务器,Slave或者Replica,发送binlog的服务器称之为主服务器),从服务器接受到binlog后,将日志记录的事件进行应用,以此达到两台服务器数据一致的目的,因此,实现了复制。主从复制的原理如下图所示:

9fc4d5ba91200a807598ebdc3fd4f694.png

方案一——MMM

MMM(Multi-Master Replication Manager)是一组灵活的脚本,用于执行 MySQL 主-主复制配置的监视/故障转移和管理(任何时候只有一个节点可写)。

MMM多用于以下2种场景:

两个节点:

63bcc952c5615ccf1b3e4b626a9a8bb1.png

在两个节点的主-主设置中,MMM使用了五个IP,每个节点只有一个永久IP,2个读取IP(只读)和1个写入IP(更新)。后面三个IP根据节点可用性在节点之间切换。

正常情况下(没有复制失败,没有复制延迟等)主服务器有2个IP(读取和写入),备用服务器- 1个IP(读取)。在发生故障时,- 写入和读取角色都会迁移到工作节点。

两个主服务器,一个或多个从服务器:

ad162a5912bb3e799c35f274b8e874ae.png

在这个场景中,写入IP只能在两台主服务器之间进行切换,读取IP可以在主从之间切换。通过MMM方案用户能实现服务器的故障转移,从而实现MySQL的高可用。

MMM的主要功能由三个脚本提供: mmm_mond 负责监控工作的守护进程,决定是否将节点进行移除(mmm_mond进行心跳检测,如果检测到失败,则将写入IP切换到另外一台主服务器) mmm_agentd 是运行在mysql服务器上的代理守护进程,mmm_control 通过命令行管理mmm_mond进程。

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证数据的一致性。当主服务器发生故障后,另一个主服务器立即接管,其他的从服务器能自动切换,不用人工干预。 

缺点:监控节点会发生单点故障。并且对主机的数量有要求,至少三个节点。如果需要实现读写分离,还需要在前端编写读写分离程序。在读写非常繁忙的业务系统下表现不是很 稳定,可能会出现复制延时、切换失效等问题。MMM方案并不太适应于对数据安全性要求很高,并且读、写繁忙的环境中。

方案二——MHA

MHA(Master High Availability)由原MySQL团队(Sun时代)的Yoshinori Matsunobu开发。可以实现故障切换和主从提升功能。在 MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

2c61b9a0132fe2a059e7f36079f35450.png

MHA由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。管理节点可以单独部署在一台独立的服务器上管理多个主从集群,也可以部署在一台 从服务器上。数据节点运行在每台 MySQL 服务器上。管理节点会定时探测集群中的 主服务器,当 主服务器出现故障时,它可以自动将具有最新数据的从服务器提升为新的主服务器,然后将所有其他的从服务器重新指向新的主服务器。整个故障转移过程对应用程序完全透明。

MHA的优势在于可以非常快速地完成故障转移及提升从服务器角色、主服务崩溃时不会导致数据不一致、用户无需修改当前 MySQL 设置、不会产生性能损失,并且适用于任何存储引擎。

MHA曾经非常流行,但随着MySQL官方的高可用方案不断推出,作者已经意识到,曾经MHA所解决的问题,已经逐渐被官方的解决方案所代替,因此,从MySQL8.0开始,作者已经不在对MHA进行开发和维护。

加入一条华丽丽的分割线1541ba0d0c02c432fd64c1bc9d6d292a.png

mysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysqlmysql

以下介绍的方案均为来自MySQL团队的方案,包括,InnoDB ReplicaSet、组复制(MySQL Group Replication MGR)、InnoDB Cluster,及InnoDB ClusterSet。

方案三——MySQL InnoDB ReplicaSet

MySQL InnoDB ReplicaSet整合了MySQL相关技术,用户能够通过MySQL Shell部署和管理 MySQL主从复制。InnoDB ReplicaSet至少由两台MySQL服务器实例组成,并提供用户熟知的MySQL主从复制功能,例如,读取横向扩展和数据安全性。

MySQL InnoDB ReplicaSet基于异步的主从复制实现,因此适用于用户对高可用性要求不高的环境,用户可以通过MySQL Shell快速搭建及管理主从复制,避免了搭建主从复制时,大量的手动操作。 InnoDB ReplicaSet的架构如下图所示:

8e9163033e89ede6f4f33666d5c39aa0.png

方案四——组复制

组复制是一个MySQL服务器插件,可以创建具有弹性、高可用性和容错的复制拓扑。组复制基于“Paxos”协议(“Mencius”)实现,支持多点写入,具有冲突检测和解决机制,它允许应用程序写入的数据在同一组内的所有服务器上保持一致。组复制内置的模块支持跨平台的分布式恢复,并通过内置的故障转移机制实现了容错。组复制插件的架构如下图所示:

0276eb5330ea9042188aa16cf6717d47.png

组复制允许用户从现有的主从复制升级到组复制,可以确保一个高可用的MySQL服务分布在多个实例中,无需人工干预来实现容错。

组复制能够确保数据库服务连续可用,但没有提供内置方法进行故障转移或负载均衡。为了实现自动化的故障转移和负载均衡,用户可以使用中间件来实现。

方案五——MySQL InnoDB Cluster

MySQL InnoDB Cluster是一套完整部署和管理MySQL的高可用性解决方案,其整合了MySQL的多项技术,以弥补组复制无法提供具有自动化故障转移功能的中间件,无法自动配置等不足。InnoDB Cluster需要至少三台MySQL服务器实例组成,并且提供高可用性和扩展功能。

InnoDB Cluster包括如下组件:

MySQL Shell:MySQL的高级客户端、管理工具和代码编辑器。

MySQL服务器和组复制:使一组MySQL实例能够提供高可用性。InnoDB Cluster提供了一种替代手动配置,易于使用的编程方式来处理组复制。

MySQL Router:一种轻量级的中间件,提供负载均衡功能,并可在应用程序和多台MySQL实例之间提供透明的连接路由。

InnoDB Cluster的整体架构如下图所示:

af610b63d76ac82c1b07e8a534b45de4.png

方案六——MySQL InnoDB ClusterSet

MySQL InnoDB ClusterSet 通过将主要的InnoDB Cluster与其他位置(例如,不同数据中心)的一个或多个副本链接,为 InnoDB Cluster 部署提供容灾能力。InnoDB ClusterSet 使用专门的ClusterSet 复制通道,自动管理从主要集群到副本集群的复制。如果主要集群因数据中心损毁或网络连接丢失变得无法使用,用户可以激活副本集群以恢复服务的可用性。InnoDB ClusterSet的整体架构如下图所示:

d751bd174cfaedfdcc5d018eeb28fa2e.png

InnoDB ClusterSet优先考虑可用性而不是一致性,以最大限度地提高系统的容灾能力。正常的复制延迟或网络分区可能意味着在主要集群遇到问题时,部分或全部副本集群与主要集群不完全一致。在这些场景中,如果触发紧急故障转移,任何未复制或发送的事务都有丢失的风险,并且只能由用户进行手动恢复和协调,无法保证在发生紧急故障转移时会保留数据。

如果用户无法容忍故障转移期间事务或数据丢失,则不能使用InnoDB ClusterSet作为系统的解决方案,可以考虑使用一个InnoDB Cluster以及跨多个数据中心部署的成员服务器。

关于官方提供的高可用方案,读者可能希望获得更多详细的信息,关于这些方案的详细内容,我将其写入了一本书“MySQL高可用解决方案——从主从复制到InnoDB Cluster”,书中详细介绍了各种方案的优缺点,及相关的技术细节,相信读者一定会从其中获得希望得到的内容。

8c4a487ece7842c4996f9738f60438e9.jpeg

ed2a2edd74c27004903fbeb855c2603f.jpeg

在此感谢各位MySQL ACED和专家们的鼓励和推荐!

1553595b7197aca544f59d150631c53b.jpeg

新书上市期间搞活动,感兴趣的读者可以从京东、当当下单购买,优惠力度空前哦!

01dcf2069561672dab496ca282d3957e.png

感谢您关注“MySQL解决方案工程师”!

6种MySQL高可用方案对比分析 MySQL InnoDB Cluster是一个强大且灵活的高可用性解决方案,适合高可用性、高一致性和高并发的业务场景。通过简单的配置和管理,企业可以快速部署一个高效且可靠的数据库集群,确保业务连续性和数据安全。Percona XtraDB Cluster是一个强大且灵活的高可用性解决方案,适合高可用性、高一致性和高并发的业务场景。通过简单的配置和管理,企业可以快速部署一个高效且可靠的数据库集群,确保业务连续性和数据安全。 阅读详情

相关推荐

MySQL 中常见的高可用架构部署方案

主从复制是MySQL基本的高可用架构之一,通过将一个MySQL实例(主库)的数据复制到一个或多个MySQL实例(从库),实现数据的冗余备份和读写分离。主主复制是主从复制的扩展,两个MySQL实例互为主从,实现双向复制,提高系统的可用性和负载均衡能力。Galera Cluster是一种多主复制的集群方案,通过同步复制实现数据一致性和高可用性。MySQL Group Replication是MySQL官方提供的多主复制集群方案,通过Paxos协议实现数据一致性和高可用性。

My_wife_QBL的博客 3565

MySQL 高可用避坑指南:从零搭建传统异步复制架构,这套方案稳!

数据备份:从库自动同步主库数据,起到备份作用读写分离:主库负责写操作,从库负责读操作,分担主库压力高可用基础:主库故障时可以切换到从库,减少业务影响主从复制是异步的,存在一定延迟,对实时性要求高的场景需要评估是否适用定期监控从库的和复制线程状态,及时发现异常从库开启read_only防止误写入,但需要给监控账号单独开放写权限。

weixin_52805903的博客 37

MySQL高可用(MHA)

一旦检测到主库故障,MHA 会选择一个新的从库,并执行一系列操作将其提升为主库,包括应用剩余的 binlog 等。总之,MHA 为 MySQL 提供了一种可靠的高可用解决方案,但在实际应用中需要仔细配置和维护,以确保其正常稳定运行。设置为"true"表示从服务器会记录自己执行的更改操作,将其写入从服务器的二进制日志文件中。指定主服务器(master)的二进制日志文件名称,用于记录主服务器上的更改操作的日志文件。指定从服务器的中继日志文件名称,即用于记录主服务器的二进制日志在从服务器上执行的中继日志。

2402_84868182的博客 1574

MySQL 常用高可用方案

在使用 MGR 时,如果要实现完整的高可用方案,就需要用到 InnoDB Cluster。MHA(Master High Avaliable) 是一款 MySQL 开源高可用程序,MHA 在监测到主实例无响应后,可以自动将同步靠前的 Slave 提升为 Master,然后将其他所有的 Slave 重新指向新的 Master。其大致原理是:在主实例的 Keepalived 中,增加监测本机 MySQL 是否存活的脚本,如果监测 MySQL 挂了,就会重启 Keepalived,从而使 VIP 飘到从实例。

AlbenXie的博客 7637

Mysql高可用方案浅析

在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql高可用、非关系型NoSQl数据库redis的高可用等,下面聊聊典型的关系型数据库mysql高可用方案

ldcaws的专栏 3771

MySQL】Orchestrator简单的 mysql 高可用方案细细细细~

orchestrator 是基于 MySQL 主从的开源的 MySQL 高可用方案,可以管理上千个 MySQL 集群。实现 MySQL 高可用的同时,可配置实现自身的高可用。项目地址: https://github.com/openark/orchestrator。

hh的博客 4727

MySQL InnoDB Cluster介绍,MHA、PXC、InnoDB Cluster怎么选?一文讲透MySQL高可用方案佳实践

MySQL官方推出的高可用一站式解决方案!集Group Replication、MySQL Shell、MySQL Router于一体,轻松实现自动故障切换、数据强一致性与读写分离。本文深入剖析其架构、部署与实践,助你构建稳定高效的数据库集群

Jackyimi的博客 1511

MySQL高可用方案:MHA vs Galera Cluster】

MySQL高可用方案对比摘要: MHA和Galera Cluster是两种主流MySQL高可用方案,各有特点: 1️⃣ 架构差异 MHA:主从异步/半同步复制,故障自动转移,适合读写分离场景 Galera:多主同步复制集群,强一致性,支持多点写入 2️⃣ 关键对比 ✔️ 性能:MHA写性能更优,Galera读扩展性更好 ✔️ 一致性:Galera提供强一致,MHA为终一致 ✔️ 恢复时间:Galera故障恢复秒级,MHA需1-2分钟 ✔️ 运维:MHA部署简单,Galera网络要求高。

weixin_64178283的博客 715

MYSQL数据库高可用方案探究

MYSQL数据库高可用方案探究 MySQL作为关键的应用数据存储中心,如何保证MySQL服务的可靠性和持续性,是我们不得不细致考虑的一个问题。当master宕机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master宕机并进行相应的故障转移处理,都需...

baihuomeng2210的博客 258

10 种常见的 MySQL 高可用方案选型解读

转载声明:本文转自「DBAplus社群」,10款常见MySQL高可用方案选型解读。 作者介绍:王松磊,现任职于 UCloud,从事 MySQL 数据库内核研发工作,主要负责 UCloud 云数据库 udb 的内核故障排查工作以及数据库新特性的研发工作。 1 概述 我们在考虑 MySQL 数据库高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库...

宇宙浪子的专栏 324

MYSQL高可用方案探究(一)前言

前言 Mysql高可用一直是mysql业界不断讨论的热点问题,其中涉及的东西比较多,可供选择的方案也相当多,面对这么多的方案,我们应该如何选择适合自己公司的mysql高可用方案呢,我觉得首先我们需要了解的自己公司的业务,了解在线系统中那些东西会影响高可用,以及了解各个高可用方案比较适合哪些场景,通过这些比对应该不难找出适合自己公司的高可用mysql方案。 经常有网友问...

weixin_30952103的博客 78

分享MYSQL中的各种高可用技术(源自姜承尧大牛)

mysql高可用各个技术的比较 数据库的可靠指的是数据可靠  数据库可用指的是数据库服务可用 可靠的是数据:例如工商银行,数据不能丢失 可用的是服务:服务器不能宕机       灵活运用MYSQL的各种高可用技术来达到下面各种级别的高可用要求 要达到99.9%:使用MYSQL复制技术 要达到99.99%:使用MYSQL NDB 集群和虚拟化技术 要达到99.999%:使用shared-nothi...

weixin_34112181的博客 109

mysql数据库高可用_MySQL数据库高可用性分析

MySQL数据库是目前开源应用大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案MySQL ReplicationMySQL Replication是MySQL官方提供的主从同步方案,用于将一个MySQL实例的数据,同步到另一个实例中。Replication为保证数据安全做了重要的保证,...

weixin_42709044的博客 308

MySQL集群的可行方案

前言 如果单MySQL的优化始终还是顶不住压力时,这个时候我们就必须考虑MySQL高可用架构(很多同学也爱说成是MySQL集群)了,目前可行的方案有: 一、MySQL Cluster 优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以这个我不推荐。 二、DRBD磁盘网络镜像方案 优势:软件功能强大,数据可在底层快设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。IO操作保持顺

weixin_39098944的博客 344

MySQL MHA高可用

目录MHA高可用架构介绍MHA高可用架构原理MHA高可用环境搭建MHA基础架构搭建环境规划环境准备配置一主双从环境配置关键程序软链接配置各节点互信安装软件配置文件状态检查开启MHA查看MHAMHA环境故障模拟及处理故障模拟故障处理MHA额外参数介绍MHA的 VIP 功能邮件提醒binlogserver管理员在高可用架构维护的职责 MHA高可用架构介绍 MHA(Master High Availability)是一款开源的 MySQL高可用解决方案,基于perl语言实现,由日本DeNA公司开发。它为 M

hawava的博客 479

MySQL高可用:MHA

简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,在MySQL故障切换过程中,MHA能够做到0~30秒之内完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在大程度上保证数据的一致性,以达到正真意义上的高可用。 ...

cxs_123的博客 343

MySQL主流高可用解决方案有_高可用MySQL解决方案概述

数据库作为基础的数据存储服务之一,在存储系统中有着非常重要的地位,因此要求其具备高可用性无可厚非。能实现不同SLA(服务水平协定)的解决方案有很多种,这些方案可以保证数据库服务器在硬件或软件出现故障时服务继续可用。高可用性需要解决的主要问题有两个,一个是如何实现数据共享或同步数据,另一个是如何处理failover。数据共享一般的解决方案是通过SAN(Storage Area Network)来实...

weixin_28977123的博客 505

架构成长之路:常见的五种MySQL高可用方案分析

架构成长之路:常见的五种MySQL高可用方案分析 程序猿小雅2019-04-17 12:36:16 1. 概述 我们在考虑MySQL数据库高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者终保持一致。 ...

u013322876的博客 342

高可用性、负载均衡的mysql集群解决方案

http://blog.chinaunix.net/u/10668/showart_1726594.html一、mysql的市场占有率二、mysql为什么受到如此的欢迎三、mysql数据库系统的优缺点四、网络服务器的需求五、什么是mysql的集群六、什么是负载均衡七、my

hzhuoquan的专栏 1604
上一篇: MySQL 存储过程运行的内存管理
下一篇: 如何阅读MySQL死锁日志
老叶茶馆_
博客等级 码龄9年 1137粉丝 411原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值