19.4.9.2 Автоматическое переключение на резервный источник для реплик
Автоматическое переключение на резервный источник для реплик активируется автоматически для канала репликации на первичном сервере группы репликации, когда вы задаёте SOURCE_CONNECTION_AUTO_FAILOVER=1 в операторе CHANGE REPLICATION SOURCE
TO для канала. Эта функция предназначена для того, чтобы группа отправителей и группа получателей оставались синхронизированными друг с другом, даже если некоторые члены временно недоступны. Когда функция активна и правильно настроена, если первичный сервер, выполняющий репликацию, выходит из строя или переходит в состояние ошибки, новый первичный сервер начинает репликацию по тому же каналу при избрании его новым лидером. Новый первичный сервер использует список источников для канала, чтобы выбрать источник с наивысшим приоритетом (весом), который может не совпадать с исходным источником.
Для настройки этой функции необходимо настроить канал репликации и учётные данные пользователя для репликации и пароль для канала на всех серверах-членах группы репликации и на всех новых присоединяющихся членах. Убедитесь, что SOURCE_RETRY_COUNT и SOURCE_CONNECT_RETRY установлены на минимальные значения, которые позволяют только несколько попыток повтора, например, 3 и 10. Вы можете настроить канал репликации с помощью CHANGE REPLICATION SOURCE TO, или, если новые серверы настроены с помощью функциональности клонирования MySQL, всё происходит автоматически. Параметр SOURCE_CONNECTION_AUTO_FAILOVER для канала транслируется членам группы первичным сервером при их подключении. Если вы позже отключите SOURCE_CONNECTION_AUTO_FAILOVER для канала на первичном сервере, это также транслируется на вторичные серверы, и они изменяют состояние канала в соответствии с этим.
Автоматическое переключение на резервный источник для реплик активируется и отключается с помощью действия члена группы репликации mysql_start_failover_channels_if_primary, которое включено по умолчанию. Вы можете отключить его для всей группы, отключив это действие на первичном сервере, используя функцию group_replication_disable_member_action, как в этом примере:
mysql> SELECT group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "AFTER_PRIMARY_ELECTION");
Функция может быть изменена только на первичном сервере и должна быть включена или выключена для всей группы, поэтому вы не можете иметь некоторые члены, предоставляющие переключение, а другие — нет. Когда действие члена mysql_start_failover_channels_if_primary отключено, канал не нужно настраивать на вторичных членах, но если первичный сервер выходит из строя или переходит в состояние ошибки, репликация для канала останавливается. Обратите внимание, что если имеется более одного канала с SOURCE_CONNECTION_AUTO_FAILOVER=1, действие члена охватывает все каналы, поэтому они не могут быть включены и выключены индивидуально с помощью этого метода. Установите SOURCE_CONNECTION_AUTO_FAILOVER=0 на первичном сервере, чтобы отключить отдельный канал.
Список источников для канала с SOURCE_CONNECTION_AUTO_FAILOVER=1 транслируется всем членам группы при их присоединении, а также при его изменении. Это так, независимо от того, являются ли источники управляемой группой, для которой членство обновляется автоматически, или они добавляются или изменяются вручную с помощью asynchronous_connection_failover_add_source(), asynchronous_connection_failover_delete_source(), asynchronous_connection_failover_add_managed() или asynchronous_connection_failover_delete_managed(). Все члены группы получают текущий список источников, как записано в таблицах mysql.replication_asynchronous_connection_failover и mysql.replication_asynchronous_connection_failover_managed. Поскольку источники не обязательно должны быть в управляемой группе, вы можете настроить функцию для синхронизации группы получателей с одним или несколькими альтернативными автономными отправителями или даже с одним отправителем. Автономная реплика, которая не является частью группы репликации, не может использовать эту функцию.
© 2025 Oracle
Licensed under the GPLv2 License.