20.1.4.2 Обнаружение сбоев
Механизм обнаружения сбоев Group Replication — это распределенная служба, которая способна определить, что сервер в группе не общается с другими, и, следовательно, считается неработающим. Если консенсус группы состоит в том, что подозрение, вероятно, справедливо, группа принимает согласованное решение об исключении члена. Исключение неработающего члена необходимо, потому что группе требуется большинство ее членов для согласования транзакции или изменения представления. Если член не участвует в этих решениях, группа должна его удалить, чтобы повысить вероятность того, что группа содержит большинство правильно работающих членов и может продолжать обрабатывать транзакции.
В группе репликации каждый член имеет двусторонний канал связи с каждым другим членом, создавая полносвязный граф. Эти соединения управляются движком групповой коммуникации (XCom, вариант Paxos) и используют сокеты TCP/IP. Один канал используется для отправки сообщений члену, а другой — для получения сообщений от члена. Если член не получает сообщений от другого члена в течение 5 секунд, он предполагает, что член вышел из строя, и отмечает статус этого члена как UNREACHABLE в собственной таблице Performance Schema replication_group_members. Обычно два члена будут подозревать друг друга в выходе из строя, потому что каждый из них не общается с другим. Возможно, хотя и менее вероятно, что член A подозревает члена B в выходе из строя, но член B не подозревает члена A в выходе из строя — возможно, из-за проблемы с маршрутизацией или брандмауэром. Член также может вызвать подозрение в отношении себя. Член, изолированный от остальной части группы, подозревает, что все остальные вышли из строя.
Если подозрение длится более 10 секунд, подозревающий член пытается распространить своё представление о том, что подозреваемый член неисправен, среди других членов группы. Подозревающий член делает это только в том случае, если он является уведомляющим, что рассчитывается по внутреннему номеру узла XCom. Если член фактически изолирован от остальной части группы, он может попытаться распространить своё представление, но это не приведёт к последствиям, так как он не может обеспечить кворум других членов для его согласования. Подозрение имеет последствия только в том случае, если член является уведомляющим, и его подозрение длится достаточно долго, чтобы быть распространённым среди других членов группы, и другие члены соглашаются с ним. В этом случае подозреваемый член отмечается для исключения из группы путём согласованного решения и исключается после истечения установленного времени ожидания переменной системы group_replication_member_expel_timeout, и механизм исключения обнаруживает и выполняет исключение.
В случае нестабильной сети и частых потери и восстановления соединений между членами в разных комбинациях теоретически возможно, что группа отметит всех своих членов для исключения, после чего группа прекратит своё существование и её потребуется настроить заново. Чтобы предотвратить эту возможность, система групповой коммуникации Group Replication (GCS) отслеживает членов группы, которые были помечены для исключения, и рассматривает их как если бы они находились в группе подозреваемых членов при принятии решения о существовании большинства. Это гарантирует, что хотя бы один член остаётся в группе, и группа может продолжать существовать. Когда исключённый член фактически удалён из группы, GCS удаляет свой запись о том, что член был помечен для исключения, чтобы член мог присоединиться к группе, если это возможно.
Дополнительную информацию о переменных системы Group Replication, которые можно настроить для определения реакций работающих членов группы на ситуации с отказами, и действиях, выполняемых членами группы, которые подозреваются в выходе из строя, см. в Разделе 20.7.7 «Ответы на обнаружение сбоев и разделение сети».
© 2025 Oracle
Licensed under the GPLv2 License.