MGR组复制常见问题

1 一个组中MySQL Server(组成员)的最大数量是多少?

单个复制组中的允许组成员(MySQL Server)的最大数量是9个。如果有更多的Server尝试加入该组时,其连接请求将被拒绝。该限制数量是通过已有的测试案例和基准测试中得出的一个安全边界,在这个安全边界中,组能够安全、可靠、稳定地运行在一个稳定的局域网中。

2 组中的成员之间如何连接与通讯?

组中的成员之间,通过建立点对点的TCP连接与组中的其他成员进行通讯。这些连接仅用于组成员之间的内部通信和消息传递。用于建立TCP连接的地址信息由系统变量group_replication_local_address进行配置。

3系统变量group_replication_bootstrap_group有什么用途?

指示启用该系统变量的Server在执行START GROUP_REPLICATION语句时引导创建一个组,并充当种子成员。后续的其他Server如果要加入组(加入组的Server在这里称为joiner成员),则需要向创建组的成员请求加入组(接受连接请求的组成员在这里称为donor节点),创建组的成员在接收到joiner节点请求之后,会动态更改一些配置,以便将其添加到组中

有如下两种场景需要使用该系统变量来引导创建一个组:

  • 在第一次创建组时,在第一个启动的Server中使用。

  • 在完全重新启动整个组时,在第一个启动的Server中使用。

4 可以使用组复制来扩展写负载吗?

如果组使用多主模式,则可以将无冲突的事务分散到不同的主要节点中,这样就能够一定程度上扩展写负载能力(通过多节点写来扩展一小部分IO操作,能够间接扩展一小部分写负载)。

5 与简单复制(主从复制)相比,在相同的工作负载下,组复制是否需要更多的网络带宽和CPU ?

由于组成员之间需要不断地相互交互消息以实现同步数据和相互告知组成员状态的目的。因此,相对于主从复制来说,预计会产生一些额外的负载,但具体多多少负载很难量化,因为它还取决于组的大小(即,组成员数量。例如:9个组成员对带宽需求大于3个成员,且内存和CPU消息也更大,因为成员数量越多,组中消息传递和处理工作就越复杂)。

6 可以跨广域网部署组复制吗?

可以,但是每个成员之间的网络连接必须可靠并具有良好的性能,低延迟、高带宽的网络连接是保证组复制高性能的必要条件,如果网络带宽存在瓶颈,可以参考"6.3 消息压缩" 中介绍的方法来降低组复制的带宽消耗。但是,如果网络连接存在丢包的问题,可能导致重新传输造成更高的端到端延迟,这个时候,吞吐量和延迟都将受到负面影响。注意:当任何组成员之间的网络往返时间(RTT)超过5秒时,可能会触发内置的故障检测机制而导致组成员被驱逐出组(实际是否被驱逐出组,需要看具体的配置)。

7 如果出现临时的连接问题,成员会自动重新加入组吗?

这取决于连接发生问题的原因。如果连接问题是暂时的,并且重新连接的速度足够快(即,发生问题的时间很短),以至于故障检测器没有发现或者未达到故障级别,那么组成员可能就不会被驱逐出组。如果发生问题的时间足够长,则故障检测器最终会发现问题并将故障成员驱逐出组。
从MySQL 8.0版本开始,可以使用两个系统变量进行调节,这就为发生问题的组成员增加了一个继续留在组中或被驱逐出组之后重新加入组的机会:

  • group_replication_member_expel_timeout:设置从怀疑的创建(在最初的5秒检测期之后发生)到成员被驱逐出组之间的间隔时间。最大支持3600秒(1个小时)的等待时间。

group_replication_autorejoin_tries:设置一个组成员被驱逐出组或者与组中多数成员失联达到超时时间之后,尝试自动重新加入组的次数。设置该系统变量为非0值时,成员会按照该系统变量设置的次数每隔5分钟进行一次自动重新加入组的尝试

如果一个成员被驱逐出组,并且耗尽了自动重新加入组的尝试次数都不能成功加入组,那么将会按照系统变量group_replication_exit_state_action指定的值执行退出操作。之后,如果需要将其重新加入组,你需要手动执行加入组的步骤(或者使用自动化运维脚本)。

8什么时候会将一个组成员驱逐出组?

  • 如果某个组成员变为静默状态(不主动发出组通讯消息,也不应答其他成员发送的组通讯消息),则其他组成员会将其从组配置中删除。实际场景中,当组成员发生崩溃或网络连接断开时可能会发生这种情况

  • 如果某个组成员在经过了给定的时间(这里指是系统变量group_replication_member_expel_timeout指定的时间值)之后还处于静默状态,则它将会被驱逐出组,组中的其他成员将会创建一个新的组配置(新的组成员资格)

9 当一个组成员明显落后于组时会发生什么?

  • 在默认的配置下,当一个成员明显落后于组时,可能会触发流量控制,进而拖慢整个组。在发生流量控制时并没有能够自动将成员从组中驱逐出组的策略,也并没有相应的系统变量进行配置,但流量控制阈值可以根据需要自行调整来缓解流量控制

你可能感兴趣的:(MGR组复制常见问题)