Spec-Zone.ru › MySQL 8.4

20.7.7.1 Таймаут удаления

Вы можете использовать системную переменную group_replication_member_expel_timeout, чтобы предоставить дополнительное время между возникновением подозрения и удалением подозрительного участника. Подозрение возникает, когда один сервер не получает сообщения от другого сервера, как описано в разделе 20.1.4.2 «Обнаружение неполадок».

Изначально период обнаружения составляет 5 секунд, прежде чем член группы Group Replication создаст подозрение о другом члене (или о себе). Член группы удаляется, когда таймаут подозрения другого члена о нём (или его собственного подозрения о себе) истекает. После этого может пройти ещё короткий промежуток времени, прежде чем механизм удаления обнаружит и реализует удаление. group_replication_member_expel_timeout указывает период времени в секундах, называемый таймаутом удаления, в течение которого член группы ожидает между созданием подозрения и удалением подозрительного члена. Подозрительные члены перечислены как UNREACHABLE в течение этого периода ожидания, но не удаляются из списка участников группы.

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

  • Если подозрительный член активируется только после истечения таймаута подозрения и может возобновить общение, он получает представление, где он удалён, и в этот момент понимает, что был удалён. Вы можете использовать group_replication_autorejoin_tries, чтобы участник автоматически попытался присоединиться к группе в этот момент. Эта функция активна по умолчанию в MySQL 8.4, и участник выполняет три попытки автоматического присоединения. Если процедура автоматического присоединения не увенчалась успехом или не была предпринята, удалённый член затем выполняет действие выхода, указанное в group_replication_exit_state_action.

Период ожидания перед удалением члена применяется только к членам, которые ранее были активными в группе. Нечлены, которые никогда не были активными в группе, не получают этот период ожидания и удаляются после первоначального периода обнаружения, потому что они слишком долго присоединялись.

Если group_replication_member_expel_timeout установлено в 0, периода ожидания нет, и подозрительный член может быть удалён сразу после окончания первоначального периода обнаружения в 5 секунд. Значение по умолчанию равно 5, что означает, что подозрительный участник может быть удалён через 5 секунд после истечения 5-секундного периода обнаружения. Необязательно, чтобы все члены группы имели одинаковое значение для group_replication_member_expel_timeout, но рекомендуется, чтобы избежать непредвиденных удалений. Любой член может создать подозрение о любом другом члене, включая самого себя, поэтому фактический таймаут удаления — это таймаут члена с наименьшим значением.

Рассмотрите возможность увеличения значения group_replication_member_expel_timeout от значения по умолчанию в следующих сценариях:

  • Сеть медленная, и 5 или 10 секунд до удаления недостаточно для того, чтобы члены группы всегда обменивались хотя бы одним сообщением.

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

  • Сеть не под вашим прямым контролем, и вы хотите свести к минимуму необходимость вмешательства оператора.

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

  • У отдельного компьютера наблюдается замедление, и вы не хотите, чтобы он был удалён из группы.

Вы можете указать таймаут удаления до максимального значения 3600 секунд (1 час). Важно убедиться, что кэш сообщений XCom достаточно велик, чтобы содержать ожидаемый объём сообщений за указанный период времени, плюс начальный 5-секундный период обнаружения, в противном случае члены не смогут повторно подключиться. Размер кэша можно настроить с помощью системной переменной group_replication_message_cache_size. Более подробную информацию см. в разделе 20.7.6 «Управление кэшем XCom».

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

Если член группы репликации неожиданно останавливается и немедленно перезапускается (например, потому что он был запущен с помощью mysqld_safe), он автоматически пытается присоединиться к группе, если group_replication_start_on_boot=on установлено. В этой ситуации попытка перезапуска и присоединения может произойти до того, как предыдущая итерация члена была удалена из группы, в этом случае член не может присоединиться. Group Replication автоматически использует функцию системы групповой коммуникации (GCS) для повторной попытки присоединения члена 10 раз с интервалом в 5 секунд между каждой попыткой. Это должно охватить большинство случаев и предоставить достаточно времени для удаления предыдущей итерации из группы, что позволит члену присоединиться. Обратите внимание, что если group_replication_member_expel_timeout системная переменная настроена для указания более длительного периода ожидания перед удалением члена, автоматические попытки повторного присоединения все равно могут не увенчаться успехом.

Для альтернативных стратегий смягчения последствий, чтобы избежать ненужных удалений, где group_replication_member_expel_timeout системная переменная недоступна, см. раздел 20.3.2 «Ограничения Group Replication».

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

Spec-Zone.ru

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