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版本!
- Spring框架(一)
- MyBatis框架(三)动态SQL,分页,二进制存入数据库图片
- Spring框架(二)反射机制, 注入, 单例模式, 自动装载, 延迟加载
- Spring框架(三) JDBCTemplate,声明式事务,自动装载(注解)
- SpringMVC 常用注解
- Spring3:AOP
- js中三目运算符和&& || 符的个人浅见
- 原生js怎么为动态生成的标签添加各种事件
- 实现图片懒加载
- SpringMVC框架(四)文件的上传下载,上下文路径
- SpringMVC框架(一)
- HTML link标签media参数
- Mybatis,Spring,SpringMVC框架面试题
- 腾讯云容器服务集群中安装 dashboard ui
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言对二分连续变量进行逻辑回归数据分析
- SAS中用单因素ANOVA研究不同疗法对焦虑症的有效性
- R语言逻辑回归预测分析付费用户
- R语言中使用多重聚合预测算法(MAPA)进行时间序列分析
- R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化
- R语言基于树的方法:决策树,随机森林,套袋Bagging,增强树
- R语言无监督学习:PCA主成分分析可视化
- 如何用r语言制作交互可视化报告图表
- R语言大数据分析纽约市的311万条投诉统计可视化与时间序列分析
- R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
- R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析
- 使用R语言进行机制检测的隐马尔可夫模型HMM
- 【Kubernetes】Octant再探...
- 聊聊claudb的SlaveReplication
- 深度学习trick--labelsmooth