
其他通过二进制日志(row 格式)实现事务同步的成员不需要执行事务的全过程(即,事务发起的原始成员和通过二进制日志同步事务
的成员,在处理同一个事务的过程上有所不同),通过二进制日志来同步和回放的机制,意味着其接收到的数据包是经过优化的紧凑格
式(可能存在着分段、打包、压缩处理),与原始成员相比,这可能会减少所需的 IO 操作数量,而且通过二进制日志格式回放的方式可
以更快地应用事务对数据的更改(事务只需要回放 row 格式的二进制日志即可,而不需要完整重新执行事务的全过程)。
如果组使用多主模式,则可以将无冲突的事务分散到不同的主要节点中,这样就能够一定程度上扩展写负载能力(通过多节
点写来扩展一小部分 IO 操作,能够间接扩展一小部分写负载)。
与简单复制(主从复制)相比,在相同的工作负载下,组复制是否需要更多的网络带宽和 CPU ?
由于组成员之间需要不断地相互交互消息以实现同步数据和相互告知组成员状态的目的。因此,相对于主从复制来说,预计
会产生一些额外的负载,但具体多多少负载很难量化,因为它还取决于组的大小(即,组成员数量。例如:9 个组成员对带宽需求大于 3
个成员,且内存和 CPU 消息也更大,因为成员数量越多,组中消息传递和处理工作就越复杂)。
可以跨广域网部署组复制吗?
可以,但是每个成员之间的网络连接必须可靠并具有良好的性能,低延迟、高带宽的网络连接是保证组复制高性能的必要条
件,如果网络带宽存在瓶颈,可以参考"6.3 消息压缩" 中介绍的方法来降低组复制的带宽消耗。但是,如果网络连接存在丢包的问题,
可能导致重新传输造成更高的端到端延迟,这个时候,吞吐量和延迟都将受到负面影响。注意:当任何组成员之间的网络往返时间(RTT)
超过 5 秒时,可能会触发内置的故障检测机制而导致组成员被驱逐出组(实际是否被驱逐出组,需要看具体的配置)。
如果出现临时的连接问题,成员会自动重新加入组吗?
这取决于连接发生问题的原因。如果连接问题是暂时的,并且重新连接的速度足够快(即,发生问题的时间很短),以至于
故障检测器没有发现或者未达到故障级别,那么组成员可能就不会被驱逐出组。如果发生问题的时间足够长,则故障检测器最终会发现
问题并将故障成员驱逐出组。
从 MySQL 8.0 版本开始,可以使用两个系统变量进行调节,这就为发生问题的组成员增加了一个继续留在组中或被驱逐出组
之后重新加入组的机会: * group_replication_member_expel_timeout:设置从怀疑的创建(在最初的 5 秒检测期之后发生)到成员被
驱逐出组之间的间隔时间。最大支持 3600 秒(1 个小时)的等待时间。 * group_replication_autorejoin_tries:设置一个组成员被驱逐
评论