Spec-Zone.ru › MySQL 5.7

17.5.2 Настройка восстановления

При присоединении нового узла к группе репликации, он подключается к подходящему донору и получает недостающие данные до момента, когда он объявлен онлайн. Этот важный компонент Group Replication обладает отказоустойчивостью и настраиваемыми параметрами. Следующий раздел объясняет, как работает восстановление и как настроить параметры.

Выбор донора

Из существующих онлайн-узлов в группе случайным образом выбирается донор. Таким образом, существует высокая вероятность, что один и тот же сервер не будет выбран более одного раза, когда несколько узлов входят в группу.

Если подключение к выбранному донору не удается, автоматически предпринимается новая попытка подключения к новому кандидату-донору. После достижения предела повторных попыток подключения процедура восстановления завершается с ошибкой.

Примечание

Донор выбирается случайным образом из списка онлайн-узлов в текущей версии.

Улучшенная автоматическая смена донора

Другой важный аспект восстановления — обеспечить его устойчивость к сбоям. Поэтому Group Replication предоставляет надежные механизмы обнаружения ошибок. В предыдущих версиях Group Replication при обращении к донору восстановление могло обнаруживать только ошибки подключения из-за проблем с аутентификацией или других проблем. Реакцией на такие проблемные сценарии была смена донора, то есть новая попытка подключения к другому узлу.

Это поведение было расширено, чтобы охватывать и другие сценарии сбоев:

  • Сценарии удаления данных - Если выбранный донор содержит некоторые удаленные данные, необходимые для процесса восстановления, возникает ошибка. Восстановление обнаруживает эту ошибку и выбирает нового донора.

  • Дублирование данных - Если сервер, присоединяющийся к группе, уже содержит данные, конфликтующие с данными, полученными от выбранного донора во время восстановления, возникает ошибка. Это может быть вызвано некоторыми некорректными транзакциями, присутствующими на сервере, присоединяющемся к группе.

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

  • Другие ошибки - Если какой-либо из потоков восстановления завершается ошибкой (ошибки в потоках приемника или прикладного слоя), возникает ошибка, и восстановление переключается на нового донора.

Примечание

В случае некоторых постоянных или даже временных сбоев восстановление автоматически повторно пытается подключиться к тому же или новому донору.

Повторные попытки подключения к донору

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

Количество попыток

Количество попыток подключения сервера, присоединяющегося к группе, к донору из пула доноров равно 10. Это настраивается через переменную плагина group_replication_recovery_retry_count. Следующая команда устанавливает максимальное количество попыток подключения к донору в 10.

mysql> SET GLOBAL group_replication_recovery_retry_count= 10;

Обратите внимание, что это учитывает общее количество попыток, которые сервер, присоединяющийся к группе, делает при подключении к каждому из подходящих доноров.

Процедуры ожидания

Переменная плагина group_replication_recovery_reconnect_interval определяет, сколько времени процесс восстановления должен ожидать между попытками подключения к донору. Значение по умолчанию этой переменной составляет 60 секунд, и вы можете динамически изменить это значение. Следующая команда устанавливает интервал повторных попыток подключения к донору восстановления в 120 секунд.

mysql> SET GLOBAL group_replication_recovery_reconnect_interval= 120;

Однако обратите внимание, что восстановление не засыпает после каждой попытки подключения к донору. Поскольку сервер, присоединяющийся к группе, подключается к разным серверам, а не к одному и тому же, он может предположить, что проблема, которая затрагивает сервер А, не затрагивает сервер Б. Таким образом, восстановление приостанавливается только тогда, когда оно прошло через все возможные доноры. После того, как сервер, присоединяющийся к группе, попытался подключиться ко всем подходящим донорам в группе и не осталось ни одного, процесс восстановления засыпает на количество секунд, настроенное переменной group_replication_recovery_reconnect_interval.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/group-replication-tuning-recovery.html

Spec-Zone.ru

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