当前位置: 首页 > news >正文

MGR用哪个版本?5.7 vs 8.0

前几天有人问:“8.0的MGR与5.7相比较,有哪些不一样的地方?”,在这篇文章里,将通过增加的系统变量说明一下MySQL8.0在MGR上的变化。

“https://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html”

从数量上来看,8.0比5.7多了7个变量,这7个变量对MGR产生了巨大的影响!让我们看一下这7个变量为MGR带来了哪些变化?

group_replication_autorejoin_tries:这个变量是在8.0.16版本加入的,它可以在群组运行时进行更改,通过这个变量可以允许因为网络等意外原因脱离集群的成员重新尝试加入集群。

group_replication_consistency:该变量值是在8.0.14加入的,同样可以在群组运行时进行更改。该变量允许用户通过设定不同的值,来保证集群范围内的数据一致性。该变量值可以设置为:

EVENTUAL

BEFORE_ON_PRIMARY_FAILOVER

BEFORE

AFTER

BEFORE_AND_AFTER”,可以确保在多主更新的模式下,各个组成员在完全一致的状态下进行更新。(5.7采用的为最终一致性EVENTUAL)。关于这部分内容可以参考文章——群组复制 - 一致性读取。

group_replication_flow_control_period:群组复制需要依靠消息的传播进行数据同步等一系列工作。群组复制的设计考虑两个工作队列:认证队列,二进制日志回放队列。每当这些队列的大小超过用户定义的阈值时,就会触发调节机制。该变量定义了两次传播控制之间要等待的秒数,在该时长中发送传播控制消息并运行传播控制管理任务。

group_replication_flow_control_release_percent:群组复制有一个节流机制,用于决定是否限制成员执行/提交新事务的速度。每个成员都有一个基于可用容量的已确定的写入配额,也就是它可以在下一阶段安全发布的大量事务。如果认证队列或二进制日志回放队列大小超过用户定义的阈值,节流机制将强制执行写入配额。配额根据上一阶段延迟的事务数量减少,然后进一步减少10%,以允许触发问题的队列减少其大小。该变量定义当传播控制不再需要限制写入成员时应如何释放组配额,百分比是每个传播控制周期的配额增加。值为0表示一旦传播控制阈值在限制之内,配额将在一次传播控制中释放。

group-replication-member-expel-timeout:指定的群组成员在产生怀疑之后,从群组中排除怀疑失败的成员之前等待的时间(以秒为单位)。

group_replication_communication_max_message_size:指定群组间传播消息的大小,默认值10M,超过该值后,可以自动进行分割。该变量在8.0.16版本加入,可以防止消息过大引起超时误报。

group_replication_message_cache_size:群组复制的通信引擎会使用服务器的内存去缓存传播的消息,该变量用于设置缓存的大小。
此外,变量group_replication_exit_state_action:是设置群组成员离开群组后的行为,8.0.18为其增加了一个OFFLINE_MODE,使用模式,不具有连接管理权限的用户将无法连接到该成员。

为了提升日志的传输效率,8.0增加了日志压缩功能,该压缩功能既适用于传统的主从复制,也同样适用于MGR。

除了集群的稳定性和性能方面,MySQL8.0里还提供了一个克隆插件,使用该插件,可以快速进行数据复制、部署集群,在易用性上也进行了大幅的提升。

综上所述,8.0的MGR通过增加变量等一系列举措,对集群的性能和稳定性方面进行了大幅的提升,可以实现严格的集群范围的数据一致性,并且提供了简单易用的克隆插件。推荐使用MGR的用户升级至8.0版本!

感谢您关注“MySQL解决方案工程师”!

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

相关文章:

  • Gdevops北京站2020收官活动归来
  • 史上最长最全!围绕故障管理谈SRE体系建设
  • MySQL如何管理客户端连接?线程池篇
  • TVP两周年:携手同行,让未来可见
  • 你知道全知乎阅读量最高的问题是什么吗?我全都爬下来了
  • 高并发下,如何让你的数据库再快一点?
  • 2300天,再出发
  • MySQL 实战笔记 第01期:MySQL 角色管理
  • MySQL 实战笔记 第02期:MySQL 元数据锁
  • 经常用Redis,这些坑你知道吗?
  • Redis为什么这么快?
  • 迁移至MySQL的数据流转流程优化
  • 长文:读《经济学32定律》
  • 使用Rancher搭建K8S测试环境
  • 深度学习在视觉搜索和匹配中的应用
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Amaple教程】5. 插件
  • 【RocksDB】TransactionDB源码分析
  • C++入门教程(10):for 语句
  • co模块的前端实现
  • CSS魔法堂:Absolute Positioning就这个样
  • egg(89)--egg之redis的发布和订阅
  • ES2017异步函数现已正式可用
  • git 常用命令
  • JAVA SE 6 GC调优笔记
  • javascript面向对象之创建对象
  • linux学习笔记
  • PHP面试之三:MySQL数据库
  • Python 基础起步 (十) 什么叫函数?
  • Python学习笔记 字符串拼接
  • Python学习之路13-记分
  • Service Worker
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue.js-Day01
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 聊一聊前端的监控
  • 微服务入门【系列视频课程】
  • 微信支付JSAPI,实测!终极方案
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 协程
  • 新手搭建网站的主要流程
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​TypeScript都不会用,也敢说会前端?
  • ​如何防止网络攻击?
  • # Apache SeaTunnel 究竟是什么?
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #14vue3生成表单并跳转到外部地址的方式
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (02)vite环境变量配置
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (全注解开发)学习Spring-MVC的第三天