sqlserver故障转移集群和alwayson的区别_集群架构:多主模式基础篇

本文介绍了MySQL Group Replication的多主模式,其中所有成员都可以处理写事务,即使并发执行。在多主模式下,执行DDL需要谨慎以避免数据不一致。此外,文章还探讨了版本兼容性、MGR服务及其架构,强调了在管理集群状态和监控方面的重要性。
摘要由CSDN通过智能技术生成
b186d7fd5e147da15ff21fb810b5ba99.png

作者  张彦东 · 沃趣科技数据库技术专家

出品  沃趣科技

d9cf3164b485dff3198900a33eb4272c.png

01 多主模式

在多主模式下(group_replication_single_primary_mode = OFF),所有成员不会区分primary和standby角色。加入该组时,与其他组成员兼容的任何成员都被设置为读写模式,并且可以处理写事务,即使它们是并发执行的。

如果组复制中的某个成员停止接受写事务,例如,在某个节点意外宕机的情况下,可以将与其连接的客户端重定向或故障转移到处于读写模式的任何其他健康的成员。组复制本身不处理客户端故障转移,因此需要使用中间件框架(例如MySQL Router 8.0,代理,连接器或应用程序本身)来实现。下图说明了MGR集群的多主模式下故障转移的实现:

23fec61b8cc567c303702d56e7140bbd.png 组复制在集群内保证了系统的最终一致性。一旦入栈流量减少,所有组成员将具有相同的数据内容。当流量在集群内部下发时,事务可以在某些成员之间先进行持久化,特别是如果某些成员的写入吞吐量小于其他成员的情况下,则可能导致性能差的节点上读取到旧数据。在多主模式下,写入速度较慢的成员还可能积压过多的事务,从而导致更大的冲突和认证失败风险。为了避免这些问题,可以针对不同的业务场景使用组复制自带的流控机制,以最大程度地减少不同成员之间的事务差异。关于MGR的流控机制,我们在后面进行详细讨论。

从MySQL 8.0.14开始,如果要为集群中的每个事务都拥有一个事务一致性保证,则可以使用group_replication_consistency系统变量来做到这一点。可以选择适合集群工作负载和数据读写优先级的设置,同时考虑到提高一致性整个集群对性能的影响。还可以为单个会话设置该系统变量,用来保护特别是对并发敏感的事务。有关事务一致性的更多信息,我们在后面的章节详细描述。

02 事务描述 当MGR集群是以多主的模式在线上运行时,集群通过以下两条原则对不同成员之间的事务进行严格的一致性检测,以保证这些事务可以在集群内提交成功: 1.如果在SERIALIZABLE隔离级别下执行事务,则在集群中同步数据时,该事务将提交失败。 2.如果事务是针对具有具有级联约束的外键的表执行的,则在集群中同步数据时,该事务将提交失败。

group_replication_enforce_update_everywhere_checks系统变量控制上述行为。在多主模式下,通常应将系统变量设置为ON,但是可以选择将系统变量设置为OFF来禁用检查。在单主模式下部署时,必须将系统变量设置为OFF。

03 在多主模式的复制拓补中,执行DDL需要格外小心

MySQL 8.0引入了对原子数据定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值