Spec-Zone.ru › MySQL 9.2

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 9.2, и участник выполняет три попытки автоматического присоединения. Если процедура автоматического присоединения не удается или не выполняется, выдворенный участник следует действию выхода, указанному в 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-9.2-en/group-replication-responses-failure-expel.html

Spec-Zone.ru

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