14.18.1.1 Функция настройки первичного узла группы репликации
Следующая функция позволяет установить член группы репликации с одним первичным узлом, который должен стать новым первичным узлом. Текущий первичный узел становится вторичным узлом только для чтения, а указанный член группы становится первичным узлом с возможностью записи. Функцию можно использовать для любого члена группы репликации, работающей в режиме с одним первичным узлом. Эта функция заменяет обычный процесс выбора первичного узла; для получения дополнительной информации см. раздел 20.5.1.1 «Изменение первичного узла».
Если на существующем первичном узле, помимо каналов группы репликации, работает стандартный канал репликации из источника в реплику, необходимо остановить этот канал репликации перед изменением первичного узла. Текущий первичный узел можно определить по столбцу MEMBER_ROLE в таблице Performance Schema replication_group_members.
Любые незавершенные транзакции, ожидаемые группой, должны быть подтверждены, отменены или прерваны перед завершением операции. Можно указать таймаут для транзакций, выполняющихся при использовании функции. Для работы таймаута все члены группы должны использовать версию MySQL 8.0.29 или более позднюю.
При истечении таймаута для транзакций, которые еще не достигли фазы подтверждения, сеанс клиента отключается, чтобы транзакция не продолжалась. Транзакции, которые достигли фазы подтверждения, разрешается завершить. При установке таймаута также предотвращается начало новых транзакций на первичном узле с этого момента. Явно определенные транзакции (с помощью операторов START
TRANSACTION или BEGIN) подчиняются таймауту, отключению и блокированию входящих транзакций, даже если они не изменяют никакие данные. Чтобы разрешить проверку первичного узла во время работы функции, разрешены отдельные операторы, не изменяющие данные, как указано в Разрешенные запросы в рамках правил согласованности.
-
group_replication_set_as_primary()Назначает конкретного члена группы в качестве нового первичного узла, перезаписывая любой процесс выбора.
Синтаксис:
STRING group_replication_set_as_primary(
member_uuid[,timeout])Аргументы:
member_uuid: Строка, содержащая UUID члена группы, который должен стать новым первичным узлом.timeout: Целое число, определяющее таймаут в секундах для транзакций, выполняющихся на существующем первичном узле при использовании функции. Можно установить таймаут от 0 секунд (немедленно) до 3600 секунд (60 минут). При установке таймаута новые транзакции не могут начинаться на первичном узле с этого момента. Нет значения таймаута по умолчанию, поэтому, если вы его не зададите, нет верхнего предела для времени ожидания, и новые транзакции могут начинаться в течение этого времени.
Возвращаемое значение:
Строка, содержащая результат операции, например, была ли она успешной или нет.
Пример:
SELECT group_replication_set_as_primary(‘00371d66-3c45-11ea-804b-080027337932’, 300);
Эта функция ожидает завершения всех текущих транзакций и операций DML перед выбором нового первичного узла. В MySQL 9.2 она также ожидает завершения любых текущих операторов DDL, таких как
ALTER TABLE. Операции, которые считаются операторами DDL для этой цели, перечислены здесь:ALTER TABLE
Это также включает любые открытые курсоры (см. раздел 15.6.6 «Курсоры»).
Для получения дополнительной информации см. раздел 20.5.1.1 «Изменение первичного узла».
© 2025 Oracle
Licensed under the GPLv2 License.