前几天有人问:“8.0的MGR与5.7相比较,有哪些不同的地方?”,在这篇文章里,将经过增长的系统变量说明一下MySQL8.0在MGR上的变化。html
“https://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html”mysql
从数量上来看,8.0比5.7多了7个变量,这7个变量对MGR产生了巨大的影响!让咱们看一下这7个变量为MGR带来了哪些变化?sql
group_replication_autorejoin_tries:这个变量是在8.0.16版本加入的,它能够在群组运行时进行更改,经过这个变量能够容许由于网络等意外缘由脱离集群的成员从新尝试加入集群。缓存
group_replication_consistency:该变量值是在8.0.14加入的,一样能够在群组运行时进行更改。该变量容许用户经过设定不一样的值,来保证集群范围内的数据一致性。该变量值能够设置为:安全
“EVENTUAL服务器
BEFORE_ON_PRIMARY_FAILOVER网络
BEFOREide
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版本!