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 8.4 она также ожидает завершения любых текущих операторов DDL, таких как
ALTER TABLE. Операции, которые считаются операторами DDL в этой цели, перечислены здесь:ALTER TABLE
Это также включает любые открытые курсоры (см. раздел 15.6.6 «Курсоры»).
Для получения дополнительной информации см. раздел 20.5.1.1 «Изменение первичного узла».
© 2025 Oracle
Licensed under the GPLv2 License.