暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
组复制背景:初识MGR---基础篇.pdf
192
5页
0次
2023-08-18
5墨值下载
组复制背景:初识MGR---基础篇
作者 张彦东 · 沃趣科技数据库工程师
出品 沃趣科技
01
MGR特性
在MySQL 8.0中,MGR在可控性、稳定性等方面具备了非常优异的特性,最重要的是其性能也有大幅提升。
本文基于MySQL 8.0.21版本和官方文档进行整理,同时也参考了业界一些技术大牛的个人博客上的一些有独到
见解的文章。从特性、集群架构、状态监控,流控,性能分析等方面详细介绍了MGR。
MGR是通过插件实现的,不是MySQL原生内置的,可用于创建弹性、高可用性、高容错的复制拓扑。
在单主模式下,只有一个节点能够接受更新操作,可以实现自动选主。也可以运行在多主模式下,多主模式下
所有节点都能接受更新操作,即使多个节点同时发起更新请求, MGR的冲突检测机制也能够保证它们正常执
行。
MGR有一个内置的服务,使得在任何给定的时间点集群内的视图能够保持一致,并为集群内的所有成员提供服
务。给定Server可以根据需要使其脱离或加入集群内,集群内的视图也会随着组成员的脱离、加入进行相应更
新。有时,Server可能会意外脱离集群,在这种情况下,故障检测机制会自动检测到并通知集群该视图已更改。
这些变更操作都是自动的,无需人工操作。
02
概述
传统意义上的创建容错系统的最常见方法是使用组件冗余,换句话说,就是搭建多个备库,因为各种原因,一
个备库宕掉后,系统可以继续按预期运行。
这种做法同时也带来了许多的问题,其中最尖锐的就是系统复杂度非常高。具体来说,需要维护和管理多台服
务器,而不仅仅是一台服务器。此外,随着业务数据的不断增加,集群内的服务器数量也越来越多,架构也越
来越复杂。伴随而来的就是经典的分布式系统问题,例如脑裂这种情况。
因此,最终需要解决的问题就是如何要让多个服务器就系统的状态以及系统所经历的每一次数据变更在集群间
达成一致。可以将其概括为使服务器上的每个MySQL实例在状态转换上都达成统一协议,从而使它们看起来像
是作为一个整体在运行,最终的结果就是需要集群间的不同成员对外展示的信息在最终达到一个一致的状态。
这意味着它们需要以(分布式)状态机来运行。
MySQL组复制为这种分布式状态机服务之间的数据复制提供了强大的协调能力。在同一个集群中的MySQL
server,它们会自动进行协调。该集群可以在具有自动选主的单主模式下运行,其中仅一个MySQL server接受
写入更新。也可以在多主要模式下运行,在该模式下,所有MySQL server都可以接受写入更新,即使这些写入
更新是同一时刻发生的。这种分布式协调能力,也可以使得这些并发请求能够正常执行,而不至于在集群内产
生数据冲突。
MySQL server可以离开或者加入集群,并且将相应的视图更新。有时MySQL server可能会意外被踢出集群,在
这种情况下,故障检测机制会检测到此情况并通知集群视图已更改。这些都是自动的。对于写入完成要提交的
事务,不管是在单主还是多主模式下,集群的大多数成员必须在全局事务顺序中就给定事务的顺序达成一致。
然后每个MySQL server自行决定提交或回滚事务,(集群中的每一个节点按照同样的顺序对需要写入的事务做
冲突认证检测)但是同一个集群内的所有MySQL server最后做出决定好对外展示的结果都应该是一致的。
如果存在网络分区,导致集群内成员之间无法达成一个一致性的结果,那么在解决此问题之前,系统会一直处
于一个阻塞的状态。因此,组复制还有一个内置的自动裂脑保护机制。通过这种内置的机制来防止发生网络分
区时,可能导致数据不一致的问题。
所有上面提到的这些特性都由(GCS)协议提供支持。GCS协议提供故障检测机制,组成员之间数据的一致性以
及安全且完全有序的消息传递。所有这些属性对于在一个可以实现分布式数据复制的集群来说是至关重要的,
Paxos算法的实现可确保在不同的组成员之间来实现分布式数据复制的一致性。
03
主从复制
传统的MySQL复制使用一种简单的主从复制方法。master执行事务,提交事务,然后将它们稍后(异步)发送
到slave以重新执行(在基于语句的复制中)或应用(在基于行的复制中)。默认情况下,所有server均具有数
据的完整副本。
of 5
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜