MySQL MGR模式介绍

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MGR是Mysql Group Replication(组复制)的缩写,Mysql5.7之后是以一个Mysql插件的形式集成在Mysql中,用于创建可伸缩、高可用、可容错的复制架构,是Mysql集群的一种形式

01

什么是MySQL MGR?

MGR是Mysql  Group  Replication(组复制)的缩写,Mysql5.7之后是以一个Mysql插件的形式集成在Mysql中,用于创建可伸缩、高可用、可容错的复制架构,是Mysql集群的一种形式。MGR包括一套内置的组成员服务,包括节点的自动加入、离开,故障检测等机制,是一项十分被看好的技术。

02

MGR出现的背景

常见的创建容错系统的方法是使用冗余组件,而一旦使用冗余组件,就需要管理多个的服务器,其中就会遇到一些   棘手的问题,例如常见的网络分区、脑裂问题。数据库容错系统的挑战就是如何让集群中的每个服务器都同意当前系统的状态以及每一个更改的数据,也就是让服务器在每个数据库状态转换上达成一致。这样它们就可以作为一个单一的数据库进行开发,或者它们最终会收敛到相同的状态。这意味着它们需要作为一个(分布式)状态机来操作。

MGR正是Mysql提供的状态机复制技术。在MGR中每个服务器都能看到其他组节点的状态,在MGR中称之为视图(view),MGR内置group  membership  service,为每个节点提供一致的视图,节点的离开、加入都会触发视图的改变,而因为网络异常的原因退出的节点,也会有相应的故障检测机制来发现。

MGR的一个重要特点是对于要提交的事务,组中的大多数必须在全局事务序列中约定给定交易的顺序,决定提交或中止事务是由每个服务器单独完成的,MGR保证所有的服务器都做出相同的决定。

所有这些功能都依赖于底层的节点间通信和协调算法。在Mysql中被称为Group Communication System (GCS),它提供了故障检测机制、组成员服务以及安全且完全有序的消息传递,其底层基于paxos算法。

03

Mysql复制技术

  • 主从复制
    传统Mysql复制技术为主从复制,一般存在一个master服务器,一个或者多个slave服务器,master执行事务并且提交,稍后binlog被复制到slave,在slave中基于状态、基于行进行复制。它是一个无共享的系统,所有服务器在默认情况下都有完整的数据副本。
  • 异步复制

async-replication-diagram.png

  • 半同步复制
    半同步复制市在master提交之前需要等待binlog传到slave之后,slave回复ACK给到master,用以确认master执行的事务已经传到了slave,注意这不保证salve应用了这些事务。

semisync-replication-diagram.png

  • 组复制
    组复制本质上是多主更新到处复制的协议,其依赖于底层的组成员间的通讯协议,底层通讯保证了消息的顺序以及原子性一个重要的特点是组中的成员都是独立地执行事务,但是事务的提交则需要组的协调批准。(只读事务例外,不需要经过组的批准。)
    如下图所示,事务将会被发送到多个组成员中,由组成员单独执行,如果存在两个不同的事务,在不同的组成员中并发执行,更新相同的行,这就可能会造成冲突,此时因为不是在单节点上,所以还无法使用单节点的加锁机制在解决此问题。组复制中使用certify过程来解决此问题,在执行事务之前,会检查两个不同并发事务的写集来检测此类冲突。组复制同样是一个无共享的复制方案,其中每个服务器都有自己的全部数据副本。组复制使得Mysql能够实现容错,在部分节点崩溃等情况下,能够实现自动检测和恢复,保证数据库本身还是连续可用的。另外,MGR只是保证数据库的可用性,还需要负载均衡或者路由器等配合,因为可能会出现IP转移等问题,而这部分功能显然是使用独立中间件更合适。

mgr-replication-diagram.png

04

MGR底层机制

  • 故障检测机制   MGR底层实现了分布式故障检测服务,能够自动检测哪些服务器可能存在问题,并经过组内其他成员同意之后将这些服务器排除出组。相对的,对于一个服务器来说,当它从组中分离出来之后,它会怀疑组内所有的其他成员都失败了,由于此时无法实现“过半数”的同意,所以这个服务器的这种怀疑没有结果,它也无法单独对外提供服务。
  • 一致性组内视图   视图是组复制中组内成员都同时维护着的对于组内其他成员的状态表。由于MGR决策过程中需要组内成员的协调,故保持对于组内成员的一致性视图是必要的。引起视图变更的情况有两种:新成员的主动加入或者旧成员主动离开,都会触发一次成员的变更,并通知到其他成员,等待其他成员大多数同意达成一致。组内成员的非自动或者意外断开,故障检测机制将会主动发现,并触发一个成员变更,同样的需要等到成员大多数同意才能更新视图,如果无法达成一致,例如剩下的成员无法实现过半数同意的情况,那么就无法形成一致,这会造成脑裂问题。
  • 容错性 MGR底层基于paxos分布式算法,组内节点数n,则允许出错的节点数f=(n-1)/2。

05

MGR运行模式

MGR模式下,集群可以是单主可写的模式,也可以是多主同时可写的模式,具体使用哪种模式通过my.cnf配置文件中配置的参数
:group_replication_single_primary_mode来进行控制

  • 当值为true时,MGR运行在Single-Primary Mode单主模式下
  • 当值为false时,MGR运行在multi-primary多主模式下
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
SQL Oracle 关系型数据库
MySQL的sql_mode模式说明及设置
MySQL的sql_mode模式说明及设置
708 112
|
8月前
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
398 5
|
Prometheus 监控 关系型数据库
数据库同步革命:MySQL GTID模式下主从配置的全面解析
数据库同步革命:MySQL GTID模式下主从配置的全面解析
1650 0
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
SQL 关系型数据库 MySQL
MySQL的match WITH QUERY EXPANSION 模式是什么?如何使用?
【8月更文挑战第29天】MySQL的match WITH QUERY EXPANSION 模式是什么?如何使用?
246 5
|
关系型数据库 MySQL 网络安全
全网首例!MySQL8 MGR多主一键搭建脚本分享
全网首例!MySQL8 MGR多主一键搭建脚本分享
360 1
|
存储 关系型数据库 MySQL
[mysql]MGR简介与部署
[mysql]MGR简介与部署
421 1
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
783 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。

推荐镜像

更多