组复制旨在创建容错系统,具有内置的故障检测和自动恢复功能。如果成员服务器实例自愿离开或停止与组通信,剩余成员将在自己之间重新配置组,并选择新的主服务器。如果成员被驱逐,自动尝试重新加入组,并通过分布式恢复来更新。 如果组遇到困难,无法与大多数成员联系以达成一致,组将确定自己失去仲裁并停止处理事务。组复制还具有内置机制和设置,以帮助组适应和管理工作负载和消息大小的变化,并在底层系统和网络资源的限制下保持运行。
组复制的默认系统变量设置旨在最大化组的性能和自治性。本节信息旨在帮助您配置复制组,以优化自动处理您在特定系统上遇到的任何重复性问题,例如暂时性网络中断或超出服务器实例资源的工作负载和事务。
如果您发现组成员被驱逐和重新加入组的频率高于您所期望的,那么可能是组复制的默认故障检测设置对于您的系统来说太敏感了。这可能发生在较慢的网络或机器上,网络中断率高,或者在计划的网络中断期间。有关如何通过调整设置来处理这种情况的建议,请参见第 20.7.7 节,“故障检测和网络分区响应”。
您通常只需要在组复制设置中手动干预,以处理组无法自动处理的问题。一些需要管理员干预的关键问题是当成员处于 ERROR
状态时无法重新加入组,或者当网络分区导致组失去仲裁。
-
如果一个原本正确地工作和配置的成员无法加入或重新加入组使用分布式恢复,并保持在
ERROR
状态,第 20.5.4.4 节,「分布式恢复故障容忍」,解释了可能的问题。一个可能的原因是加入的成员具有额外的事务,这些事务不在组中的现有成员上。关于如何处理这种情况的建议,请参阅 第 20.4.1 节,「GTIDs 和组复制」。 -
如果一个组失去了仲裁,这可能是由于网络分区将组分成两个部分,或者可能是由于大多数服务器的故障。关于如何处理这种情况的建议,请参阅 第 20.7.8 节,「处理网络分区和仲裁丢失」。