mysql8.0表结构复制_了解MySQL 8.0组复制限制以构建高度可靠的MySQL基础结构操作...

本文介绍了MySQL8.0组复制的工作原理,包括其如何提供几乎同步的复制、内置冲突检测和一致性保证。讨论了系统可用性的定义,强调了MTBF和MTTR对系统高可用性的重要性。还详细阐述了MySQL8.0组复制的限制,如最大成员数量、事务处理和大型事务的处理方法。最后,强调了组复制在构建高可用性数据库系统中的作用,但建议在利用其优势的同时,还需考虑性能优化和参数调整。
摘要由CSDN通过智能技术生成

目录

简介–冗余和容错数据库系统

1.1系统的可用性通常定义为(Marcus,2003年):– A = MTBF / MTBF + MTTR

MySQL 8.0组复制如何工作?

MySQL 8.0组复制限制

在MySQL组复制中处理事务限制

结论

简介–冗余和容错数据库系统

我们的大多数客户是24 * 7的互联网属性,它们的应用程序(即整个业务运营)在很大程度上依赖于各个数据库系统节点的可用性。这些不可用的系统将严重影响声誉,客户体验和收入。为了确保在可预见和不可预料的人为或自然灾害下的业务连续性,必须设计和构建具有容错能力和灾难恢复功能的数据库系统,换句话说,可以删除组件,并且系统应继续按预期运行。高可用性是指系统的特征,该特征使系统能够在由于自然或人为原因导致的硬件和软件故障的情况下维持连续运行(Webb,2008年)。

系统的可用性通常定义为(Marcus,2003):– A = MTBF / MTBF + MTTR

其中A是系统可用性,MTBF是两次故障之间的平均时间,MTTR是恢复系统的平均时间。从系统可用性的公式可以得出,当MTTR接近零时(即系统停机时间很短),可用性(A)会提高到100%。另一方面,当MTBF变大时(即系统停机时间很少发生),MTTR对A的影响较小。因此,系统高可用性的目标是使MTTR尽可能小,MTBF尽可能大。

MySQL 8.0组复制如何工作?

MySQL Group Replication是一个插件(首次与MySQL 5.7 Server一起发布),可以提供几乎同步的复制,并具有内置的冲突检测/处理和一致性保证,因此各个机器和/或MySQL实例可能会失败或脱机进行维护而分布式MySQL服务将继续运行并处理应用程序流量。

MySQL组复制基于Paxos实现,可确保所有服务器以相同的顺序接收相同的数据集。有一个内置的组成员资格服务,可以使组的视图一致,并且在任何给定时间点均可用于所有服务器。服务器可以离开并加入该组,并且视图将相应更新。有时服务器可能会意外离开该组,在这种情况下,故障检测机制会检测到此情况并通知该组视图已更改。这都是自动的。

在MySQL组复制中,要提交事务,组的大多数必须在全局事务顺序中就给定事务的顺序达成一致。每个服务器分别决定提交或中止事务,但是所有服务器都做出相同的决定。如果存在网络分区,导致成员无法达成协议的分裂,则系统将不会继续运行,直到解决此问题。因此,还有一个内置的自动裂脑保护机制。

MySQL 8.0组复制限制

可以作为单个复制组成员的MySQL服务器的最大数量为9,将拒绝通过添加更多成员进行的任何进一步尝试。从功能上来说,这对我们来说似乎很合理,为什么要添加多个MySQL实例以使组复制基础结构的操作变得复杂?

如果在多主模式下运行组复制,则SELECT…FOR UPDATE 语句可能会导致死锁,这是因为未在组成员之间共享该锁,因此可能无法达到该语句的期望。

我们不能在组复制上使用复制过滤器。因为,筛选选定服务器上的事务将使该组能够就一致状态达成协议。但是,您可以在与组复制不直接相关的复制通道上实现复制筛选器

在MySQL组复制中处理事务限制

配置group_replication_transaction_size_limit系统变量以控制组将允许的最大事务大小。默认值约为143 MB(150000000字节)。处理交易所需的时间与交易规模成正比。

组复制使用压缩算法LZ4,默认情况下已启用,阈值为1000000字节(1 MB)。您可以通过配置系统变量group_replication_compression_threshold来调整此值 。我们复制了以下设置压缩阈值的步骤:

STOP GROUP_REPLICATION;

SET GLOBAL group_replication_compression_threshold= 5242880;

START GROUP_REPLICATION;

在上面的脚本中,我们将压缩阈值设置为5MB。现在,如果事务生成的复制消息大于5MB,即二进制日志事务条目大于5MB,则将其压缩。

注意:您可以通过将阈值设置为“ 0 ” 来禁用压缩

在组复制中,大型邮件会自动分段。因为,当在组复制组成员之间发送异常大的消息时,它可能导致某些组成员被报告为失败并从该组驱逐。因此,大型邮件会自动拆分为多个片段,这些片段将分别发送并由收件人重新组合。您可以配置系统变量 group_replication_communication_max_message_size(默认值为10485760 bytes / 10 MiB )来指定消息大小,在该消息大小之上将消息分段。该值不能大于系统变量 slave_max_allowed_pa​​cket, 它是1073741824字节(1 GB)。您可以通过将值设置为“ 0 ”来 关闭碎片group_replication_communication_max_message_size 。

注意:为了使复制组使用碎片,所有组成员必须位于MySQL 8.0.16或更高版本

结论

组复制绝对是一种用于构建高可用性,容错和自我修复的MySQL基础结构操作的现成解决方案。即使某些服务器随后发生故障,只要不是全部或大多数,该系统仍然可用。根据失败的服务器数量,该组的性能或可伸缩性可能会下降,但是它仍然可用。最后,MySQL Group Replication保证数据库服务是连续可用的。但是,当您使用这种引人注目的解决方案来实现MySQL可靠性时,最好同时放宽限制和可调参数以提高性能。

参考文献

https://www.percona.com/blog/2017/08/01/group-replication-sweet-sour/

https://mysqlhighavailability.com/mysql-group-replication-a-quick-start-guide/

https://dev.mysql.com/doc/refman/8.0/zh-CN/group-replication-limitations.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值