Spec-Zone.ru › MySQL 8.4

20.7.7.4 Действие при выходе

Переменная системы group_replication_exit_state_action определяет действия Group Replication при непреднамеренном выходе узла из группы по причине ошибки или проблемы, когда автоматическое повторное присоединение не происходит или не выполняется попытка. Обратите внимание, что в случае исключённого узла, узел не знает об исключении до повторного подключения к группе, поэтому указанное действие выполняется только если узел удаётся подключиться повторно или если узел выявляет подозрение на себя и исключает себя.

В порядке влияния действия при выходе следующие:

  1. Если READ_ONLY является действием при выходе, экземпляр переключает MySQL в режим супер-только для чтения, установив переменную системы super_read_only в значение ON. Когда узел находится в режиме супер-только для чтения, клиенты не могут выполнять никакие обновления, даже если у них есть привилегия CONNECTION_ADMIN (или устаревшая привилегия SUPER). Однако клиенты всё ещё могут читать данные, и поскольку обновления больше не выполняются, существует вероятность устаревших чтений, которая увеличивается со временем. При этом значении необходимо активно отслеживать серверы на предмет сбоев. Это действие при выходе является значением по умолчанию; после его выполнения статус узла отображается как ERROR в представлении группы.

  2. Если OFFLINE_MODE является действием при выходе, экземпляр переключает MySQL в автономный режим, установив переменную системы offline_mode в значение ON. Когда узел находится в автономном режиме, подключенные пользователи клиента отключаются при следующей попытке запроса, а подключения больше не принимаются, за исключением пользователей клиента, у которых есть привилегия CONNECTION_ADMIN (или устаревшая привилегия SUPER). Group Replication также устанавливает переменную системы super_read_only в значение ON, так что клиенты не могут выполнять никакие обновления, даже если подключились с привилегией CONNECTION_ADMIN или SUPER. Это действие при выходе предотвращает как обновления, так и устаревшие чтения (за исключением чтений пользователями клиента с указанными привилегиями), и позволяет инструментам-прокси, таким как MySQL Router, распознать, что сервер недоступен, и перенаправить подключения клиентов. Оно также позволяет экземпляру оставаться работающим, чтобы администратор мог попытаться решить проблему, не останавливая MySQL. После выполнения этого действия при выходе статус узла отображается как ERROR в представлении группы (не OFFLINE, что означает, что узел имеет функциональность Group Replication, но в настоящее время не принадлежит к группе).

  3. Если ABORT_SERVER является действием при выходе, экземпляр завершает MySQL. Инструкция узлу завершить работу предотвращает все устаревшие чтения и обновления клиентов, но означает, что экземпляр MySQL недоступен и должен быть перезапущен, даже если проблему можно было бы решить без этого шага. После выполнения этого действия при выходе узел удаляется из списка серверов в представлении группы.

Следует помнить, что вмешательство оператора требуется в любом случае, независимо от установленного действия при выходе, так как бывший узел, исчерпавший попытки автоматического повторного присоединения (или никогда их не имевший) и исключённый из группы, не может повторно присоединиться без перезапуска Group Replication. Действие при выходе влияет только на возможность клиентов читать данные на сервере, который не смог повторно присоединиться к группе, и на то, останется ли сервер работающим.

Важно

Если сбой произошёл до успешного присоединения узла к группе, действие при выходе, заданное переменной group_replication_exit_state_action, не выполняется. Это происходит в случае сбоя при проверке локальной конфигурации или несоответствия между конфигурацией присоединяющегося узла и конфигурацией группы. В этих ситуациях переменная системы super_read_only сохраняет своё исходное значение, и сервер не завершает MySQL. Чтобы гарантировать, что сервер не может принимать обновления, когда Group Replication не запущен, мы рекомендуем установить super_read_only=ON в файле конфигурации сервера при запуске, что Group Replication изменяет на OFF на первичных узлах после успешного запуска. Эта мера предосторожности особенно важна, когда сервер настроен на запуск Group Replication при загрузке сервера (group_replication_start_on_boot=ON), но также полезна, когда Group Replication запускается вручную с помощью оператора START GROUP_REPLICATION.

Если сбой происходит после успешного присоединения узла к группе, применяется заданное действие при выходе. Это происходит в следующих ситуациях:

  1. Ошибка приложения - В приложении репликации возникла ошибка. Эта проблема не подлежит исправлению.

  2. Распределённое восстановление невозможно - Возникла проблема, из-за которой процесс распределённого восстановления Group Replication (использующий операции удалённого клонирования и передачу состояния из двоичного журнала) не может быть завершён. Group Replication автоматически повторяет распределённое восстановление, где это имеет смысл, но останавливается, если больше нет вариантов для завершения процесса. Подробнее см. Раздел 20.5.4.4, «Устойчивость к отказам при распределённом восстановлении».

  3. Ошибка изменения конфигурации группы - Во время изменения конфигурации всей группы, выполненной с помощью функции, как описано в Раздел 20.5.1, «Настройка онлайн-группы», произошла ошибка.

  4. Ошибка выборов первичного узла - При выборе нового первичного узла для группы в режиме с одним первичным узлом, как описано в Раздел 20.1.3.1, «Режим с одним первичным узлом», произошла ошибка.

  5. Таймаут недоступности большинства узлов - Узел потерял связь с большинством узлов группы, и истек таймаут, установленный переменной системы group_replication_unreachable_majority_timeout.

  6. Узел исключён из группы - Появилось подозрение на узел, и таймаут, заданный переменной системы group_replication_member_expel_timeout, истек, и узел возобновил связь с группой и обнаружил, что был исключён.

  7. Исчерпаны попытки автоматического повторного присоединения - Переменная системы group_replication_autorejoin_tries была установлена для определения количества попыток автоматического повторного присоединения после потери большинства или исключения, и узел завершил это количество попыток без успеха.

В следующей таблице обобщены сценарии сбоев и действия в каждом случае:

Таблица 20.3 Действия при выходе в ситуациях сбоев Group Replication

Таблица 20.3 Действия при выходе в ситуациях сбоев Group Replication

Ситуация сбоя

Group Replication запущен с START GROUP_REPLICATION

Group Replication запущен с group_replication_start_on_boot =ON

Узел не прошёл проверку локальной конфигурации

Несоответствие между конфигурацией присоединяющегося узла и конфигурацией группы

super_read_only и offline_mode неизменны

MySQL продолжает работу

Установите super_read_only=ON при запуске для предотвращения обновлений

super_read_only и offline_mode неизменны

MySQL продолжает работу

Установите super_read_only=ON при запуске для предотвращения обновлений (важно)

Ошибка приложения на узле

Распределённое восстановление невозможно

Ошибка изменения конфигурации группы

Ошибка выборов первичного узла

Таймаут недоступности большинства узлов

Узел исключён из группы

Исчерпаны попытки автоматического повторного присоединения

super_read_only установлено в ON

ИЛИ

offline_mode и super_read_only установлены в ON

ИЛИ

MySQL завершает работу

super_read_only установлено в ON

ИЛИ

offline_mode и super_read_only установлены в ON

ИЛИ

MySQL завершает работу


© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/group-replication-responses-failure-exit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API