1. MGR简介 | 深入浅出MGR

什么是MGR高可用(完整版) 文章介绍了MGR的组复制技术架构、单主和多主模式、节点管理、故障检测、容错机制 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

1. 为什么是MGR

MGR是MySQL Group Replication的缩写,即MySQL组复制。

在以往,我们一般是利用MySQL的主从复制或半同步复制来提供高可用解决方案,但这存在以下几个比较严重的问题:

  1. 主从复制间容易发生复制延迟,尤其是在5.6以前的版本,以及当数据库实例中存在没有显式主键表时,很容易发生。
  2. 主从复制节点间的数据一致性无法自行实现最终一致性。
  3. 当主节点发生故障时,如果有多个从节点,无法自动从中选择合适的节点作为新的主节点。
  4. 如果采用(增强)半同步复制,那么当有个从节点因为负载较高、网络延迟或其他意外因素使得事务无法及时确认时,也会反过来影响主节点的事务提交。

因为上述几个明显的缺点,因此MySQL推出了全新的高可用解决方案 -- 组复制,这是本系列文章要着重介绍的新特性。

MGR是MySQL 5.7.17开始引入的,但随着5.7版本逐渐退出历史舞台(MySQL 5.7已于2020年10月起不再做大的功能更新,只有修修补补以及针对安全更新),更多MGR相关特性都只在MySQL 8.0上才有。

因此,如果线上还有基于MySQL 5.7版本的MGR环境的话,建议尽快升级、迁移到MySQL 8.0版本。进一步提醒,推荐MySQL 8.0.22及之后的版本,整体会更稳定可靠,也有些很不错的新功能(不只是MGR方面的)。

2. MGR技术概要

MGR具备以下几个特点:

  1. 基于shared-nothing模式,所有节点都有一份完整数据,发生故障时可以直接切换。
  2. MGR提供了数据一致性保障,默认是最终一致性,可根据业务特征需要自行调整一致性级别。
  3. 支持在线添加、删除节点,节点管理更方便。
  4. 支持故障自动检测及自动切换,发生故障时能自动切换到新的主节点,再配合MySQL Router中间件,应用层无需干预或调整。
  5. 支持单节点、多节点写入两种模式,可根据架构或业务需要选择哪种方案,不过强烈建议选用单主模式。

MGR可以选择单主(Single-Primary)模式 file

如上图所示,一开始S1节点是Primary角色,提供读写服务。当它发生故障时,剩下的S2-S5节点会再投票选举出S2作为新的Primary角色提供读写服务,而S1节点再达到一定超时阈值后,就会被踢出。

亦可选择多主(Multi-Primary)模式(再次强烈建议选用单主模式) file

如上图所示,一开始S1-S5所有节点都是Primary角色,都可以提供读写服务,任何一个节点发生故障时,只需要把指向这个节点的流量切换下就行。

上述两种架构模式下,应用端通过MySQL Router连接后端在MGR服务,当后端节点发生切换时,Router会自动感知,对应用端来说几乎是透明的,影响很小,架构上也更灵活。

3. MGR技术架构

首先来个MGR的技术架构图: Group Replication Plugin Architecture

MGR是以Plugin方式嵌入MySQL,部署更灵活方便。

事务从Server层通过钩子(hook)进入MGR API接口层,再分发到各组件层,在组件层完成事务Capture/Apply/Recover,通过复制协议层(Replication Protocol Logics)传输事务,最后经由GCS协调事务在各节点的最终一致性。

MGR节点间由组通信系统(GCS)提供支持,它提供了故障检测机制、组成员角色管理,以及安全且有序的消息传递,这些机制可确保在各节点间一致地复制数据。这项技术的核心是Paxos算法的实现,在MySQL里称之为XCom,由它充当MGR的通信引擎。

对于要提交的事务,组中的多数派节点必须就全局事务序列中给定的事务顺序达成一致。各节点做出决定提交或中止事务的选择,但所有节点都要做出相同的决定。如果发生网络分区,导致节点间无法达成一致决定,则在网络恢复前,MGR无法工作。

MGR支持单主和多主两种模式,在单主模式下,各节点会自动选定主节点,只有该主节点能同时读写,而其他(从)节点只能只读。在多主模式下,所有节点都可以进行读写。

相对于MariaDB Galera Cluster(以及基于此技术的Percona XtraDB Cluster,下面为了书写方便,都统称为PXC),个人认为MGR具备以下几个优势:

  1. PXC的消息广播机制是在节点间循环的,需要所有节点都确认消息,因此只要有一个节点故障,则会导致整个PXC都发生故障。而MGR则是多数派投票模式,个别少数派节点故障时,一般不影响整体的可用性。这也是PXC存在的最大问题。
  2. PXC的节点间数据传输除了binlog,还有个gcache,这相当于是给MySQL又增加两个黑盒子。而MGR则都是基于原生binlog的,没有新增黑盒子,运行起来更可靠,需要排障时也更方便。
  3. 发生网络分区时,整个PXC集群都不可用。而MGR则至少还能提供只读服务。
  4. PXC的流控机制影响更大,一旦触发流控,所有节点都受到影响。而MGR触发流控后,只会影响本地节点,不影响远程节点。当然了,MySQL的流控做的也比较粗糙,在GreatSQL中进一步完善和优化。
  5. 执行DDL期间,整个PXC集群都不可同时执行DML,也就是说不支持Online DDL。而MGR是支持的,这也是很大的优势。

相对于传统主从复制(Replication),我认为MGR的优势有以下几点:

  1. 主从复制非常容易产生复制延迟,尤其是当表中没有显式主键时。而在MGR里,要求表一定要有主键(或是可用作聚集索引的非空唯一索引),避免了这个问题。
  2. 半同步复制中,一旦slave因为锁或其他原因响应慢的话,也会导致master事务被阻塞。MGR是采用多数派确认机制,个别节点响应慢对Primary节点的影响没那么大(不要选用AFTER模式)。
  3. 主从复制没有类似MGR那样提供事务数据的一致性保证。MGR自带了事务数据一致性保障机制。

以上是我根据MySQL、MariaDB、Percona的资料整理得到的观点,不一定准确和全面,有不完善的地方还请留言指正。

4. 小结

本节主要介绍了什么是MGR,MGR的技术架构概要,以及MGR相对PXC的几个技术优势。

MGR是MySQL四部战略走的关键一环,依靠MGR和MySQL Shell、MySQL Router已实现了读节点扩展,以及写节点扩展(MGR多主模式),下一步预计实现sharding,让我们拭目以待。

相信MGR也是MySQL未来几年的重头戏,建议跟紧方向,不要错过这班列车。

参考资料、文档

免责声明

因个人水平有限,专栏中难免存在错漏之处,请勿直接复制文档中的命令、方法直接应用于线上生产环境。请读者们务必先充分理解并在测试环境验证通过后方可正式实施,避免造成生产环境的破坏或损害。

Enjoy GreatSQL :)

文章推荐:

GreatSQL季报(2021.12.26)
https://mp.weixin.qq.com/s/FZ_zSBHflwloHtZ38YJxbA

技术分享|sysbench 压测工具用法浅析
https://mp.weixin.qq.com/s/m16LwXWy9bFt0i99HjbRsw

故障分析 | linux 磁盘io利用率高,分析的正确姿势
https://mp.weixin.qq.com/s/7cu_36jfsjZp1EkVexkojw

技术分享|闪回在MySQL中的实现和改进
https://mp.weixin.qq.com/s/6jepwEE0DnYUpjMYO17VtQ

万答#20,索引下推如何进行数据过滤
https://mp.weixin.qq.com/s/pt6mr3Ge1ya2aa6WlrpIvQ

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

Bilibili: https://space.bilibili.com/1363850082/video

微信&QQ群: 可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697 微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

技术干货|深入浅出MGR—MGR性能优化 深入浅出MGR—MGR性能优化 阅读详情

相关推荐

搭建MySQL集群--MGR

一、MGR 介绍 MGR 集群简介 MySQL Group Replication(简称 MGR)是 MySQL 官方于 2016 年 12 月推出的一个全新的高 可用与高扩展的解决方案。MySQL 组复制提供了高可用、高扩展、高可靠的 MySQL 集群服务 MGR 的特点 1、高一致性,基于原生复制及 paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证; 2、高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误

ziye140030的博客 8036

万字详解 MySQL MGR 高可用集群搭建

MGR(MySQL Group Replication)是MySQL 5.7.17版本诞生的,是MySQL自带的一个插件,可以灵活部署。保证数据一致性又可以自动切换,具备故障检测功能、支持多节点写入。集群是多个MySQL Server节点共同组成的分布式集群,每个Server都有完整的副本,它是基于ROW格式的二进制日志文件和GTID特性。在单主模式下, 组复制具有自动选主功能,每次只有一个 server成员可以作为主节点。单主模式 group 内只有一台节点可写可读,其他节点只可以读。

保持学习 9302

docker 搭建mgr集群

docker 搭建mgr集群

congge 2万+

MGR基本使用

第一章:MGR介绍 MGR(MySQL Group Replication)是一个MySQL Server插件,可用于创建弹性,高可用MySQL集群方案。有一个内置的组成员服务,在任何给定的时间点,保持组的视图一致并可供所有服务器使用。服务器可以离开并加入组,视图也会相应更新。当成员离开组,故障检测机制会检测到此情况并通知组视图已更改。 1.1传统的数据主从复制 1.1.1主从复制 传统的数据主...

十五十六 2万+

从零到一:用STM32 FOC算法驯服无刷电机的艺术

本文详细介绍了如何使用STM32和FOC算法实现无刷电机的高性能控制。从硬件搭建、参数识别到闭环调节,一步步解析FOC算法的核心原理与调优技巧,帮助开发者掌握电机控制的关键技术,实现从零到一的精准驯服。

kkk56的博客 918

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1606

数据库系列之MySQL组复制MGR技术

MGR组复制是MySQL的一种高可用复制技术,用于构建高可用、高扩展和高容错的拓扑架构中。本文简要介绍MGR复制技术的原理,并配置多主模式进行测试。

牧羊人的方向 3753

kbjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check

这条信息是来自 KingbaseES 数据库的一个 JDBC 客户端连接提示。KingbaseES 是一个企业级的关系型数据库管理系统,它兼容 PostgreSQL 的许多特性。如果上述步骤仍然无法解决问题,建议详细查看数据库和客户端的日志文件,以获取更具体的错误信息。此外,也可以考虑联系 KingbaseES 的技术支持获取帮助。项目融合kingbase数据库,输出日志乱码。结果:网上各种调整各种试。

zjy660358的专栏 4844

3. 安装部署MGR集群 | 深入浅出MGR

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 [toc] 本文介绍如何利用GreatSQL 8.0.25构建一个三节点的MGR集群。 1. 安装准备 准备好下面三台服务器: IP 端口 角色 172.16.16.10 3306 mgr1 172.16.16.11 3306 mgr2 172.16.16.12 3306 mgr3 确保三个节点间的网络是可以互通的,并且没有针对3306和33061端口的防火墙拦截规则。 下载GreatSQL二进制文..

GreatSQL2021的博客 1927

欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收

实验设备:CJ2M-CPU33、CJ1W-SCU21、XW2Z-200T 实验目的:了解 CJ1W-SCU 通配符使用 1.硬件接线: CJ1W-SCU21单元号拨码置于8,使用串口1(232口)。 2.软件设置: ① 新建工程,选择PLC型号CJ2M-CPU33,切换到编程模式,如下图: 、 ② 创建I/O并进行相关配置,如下图: ③ 设置为用户设置,协议宏模式,8位数据位,2位停止位,偶校验9600波特率,如下图: 、 ④ 打开CX-Protocal软件,新建工程: .

weixin_42118352的博客 1984

Z-Image Turbo LoRA训练全流程:从数据标注到模型部署的保姆级指南(附ai-toolkit配置)

本文提供了一份详尽的Z-Image Turbo LoRA模型训练全流程指南,涵盖从数据准备、智能标注、参数调优到最终模型部署与Z-Image集成的每个环节。重点解析了使用ai-toolkit训练整合包进行高效训练的核心技巧与避坑方法,旨在帮助用户稳定训练出高质量的专属角色模型。

weixin_29088655的博客 962

03.安装部署MGR集群 | 深入浅出MGR

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 安装准备2. 初始化MySQL Server3. 初始化MGR第一个节点4. 继续设置另外两个节点5....

老叶茶馆 638

RK3506开发板实战:5分钟搞定开源鸿蒙OpenHarmony5.1+星闪功能配置

本文提供了一份基于RK3506开发板快速配置开源鸿蒙OpenHarmony 5.1并启用星闪功能的实战指南。文章详细介绍了从开发环境搭建、系统镜像编译烧录,到星闪驱动加载验证、应用开发及性能调优的全流程,帮助开发者高效上手,将新一代短距无线通信技术应用于物联网项目。

time3的博客 656

11. MGR技术架构及数据同步、认证机制 | 深入浅出MGR

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 [toc] 本文简单介绍下MGR的整体技术架构概况,事务同步过程,事务认证机制等关键知识点。 1. MGR架构 再来看一遍MGR的架构图: 从上图可知,MGR工作时,主要涉及到以下三层: Server层:负责处理用户请求,接收用户事务,返回结果等。 MGR处理层:接收来自Server层的事务请求,处理Paxos层返回消息。 Paxos层:将所有消息进行全.

GreatSQL2021的博客 1644

一文读懂客户健康度

什么是客户健康度?客户健康度为什么重要?怎么计算客户健康度?这篇文章,我们来聊聊。

m0_62700043的博客 1420

Synopsys工具filter命令:从数据筛选到高效IC设计的实战指南

在数字集成电路设计流程中,数据筛选与查询是工程师处理海量网表、时序报告和设计约束的核心需求。其原理在于通过声明式查询语言,直接对设计对象(如单元、网络、路径)的属性进行逻辑判断与模式匹配,从而精准定位目标。这种技术价值在于将工程师从繁琐的过程式脚本循环中解放出来,大幅提升代码可读性与运行效率,直接调用工具内置的高性能查询引擎。在实际应用场景中,它广泛用于物理与时序联合分析、层次化模块操作、动态约束生成以及自动化报告生成。本文聚焦于Synopsys工具链中filter命令的高阶用法,深入解析其表达式语法、正则

weixin_28007513的博客 577

组复制技术架构 | 深入浅出MGR

本文首发于GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源1. 传统主从复制技术架构传统主从复制的方式是在master节点上执行数据更新事务,而后记录这些事务到b...

老叶茶馆 1214

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2. 组复制技术架构 | 深入浅出MGR

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 1. 传统主从复制技术架构 传统主从复制的方式是在master节点上执行数据更新事务,而后记录这些事务到binlog中,再将binlog发送到slave节点转储成relay log,在slave节点上再有单独的线程读取这些relay log然后重新执行或应用这些事务,它是shared-nothing的,每个节点都有一份完整的数据副本,其技术流程图如下所示: 传统主从复制技术架构图 MySQL还提供了半同步复制,这是在..

GreatSQL2021的博客 3231

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql的mgr是什么意思_MySQL之MGR简介

一、什么是MGR?MGR(MySQL Group Replication),是MySQL在2016年12月推出的一个全新的高可用与高扩展的解决方案。二、为什么要使用MGR?MySQL推出MGR之前,传统复制分为两种,异步复制、半同步复制。MySQL Asynchronous Replication(异步复制):master执行事务,写入binlog日志,然后提交。slave接收binlog日志事务...

weixin_35896668的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 安装准备2. 利用MySQL Shell构建MGR集群3. MySQL Shell接管现存的MGR集群...

老叶茶馆 772

【MySQL】MGR集群相关简介

1.MGR简介 MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供。MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,只要不是集群中的大多数节点都宕机,就可以继续正常工作。提供单主模式与多主模式,多主模式支持多点写入。 2.原理简单介绍 组复制是一种可用于实现容...

MySQL技术 1712

mysql8.0使用MGR实现高可用

1. MGR简介  2. 组复制技术架构  3. 安装部署MGR集群  4. MGR管理维护  5. MGR状态监控  6. 利用MySQL Router构建读写分离MGR集群  1. 部署MySQL Router  2. 启动mysqlrouter服务  3. 确认读写分离效果  4. 确认只读负载均衡效果  7. 小结

Starry__Sky222的博客 2183

mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项

MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供。MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,只要不是集群中的大多数节点都宕机,就可以继续正常工作。提供单主模式与多主模式,多主模式支持多点写入。MGR集群的搭建,参考文章MySQL MGR 集群搭建(单主模式...

weixin_34966468的博客 2170

MySQL组复制MGR简介

本篇介绍了MySQL组复制,然后简述了搭建过程 文章目录MGR简介搭建MySQL Group Replication问题解决备注搭建Consul MGR简介 MySQL Group Replication MySQL组复制,简称MGR,是MySQL官方推出的一个MySQL集群的其中一个方案,其特点是允许创建最多9个节点、最少3个节点的集群,有2种模式:单主多从、多主多从,其中,Primary主节点负责读写,Secondary从节点负责读,当Primary节点宕机,其他节点会自动推举出一台作为新的Prim.

wangnan229的博客 417

5. MGR管理维护 | 深入浅出MGR

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 切换主节点2. 切换单主/多主模式3. 添加新节点4. 删除节点5. 异常退出的节点重新加回6. 重启...

老叶茶馆 922
上一篇: 万答#21,如何查看 MySQL 数据库一段时间内的连接情况
下一篇: 2. 组复制技术架构 | 深入浅出MGR
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值