Spec-Zone.ru › MySQL 8.4

20.5.1.1 Изменение первичного узла

В этом разделе объясняется, как изменить первичный узел в группе с одним первичным узлом, используя функцию group_replication_set_as_primary(), которую можно запустить на любом узле группы. При этом текущий первичный узел становится только для чтения вторичным, а указанный узел группы становится первичным узлом со чтением и записью; это заменяет обычный процесс выборочного первичного узла (см. Раздел 20.1.3.1, «Режим с одним первичным узлом»).

Если на текущем первичном узле, помимо каналов Групповой репликации, работает стандартный канал репликации «источник-копия», необходимо остановить этот канал репликации, прежде чем можно будет изменить первичный узел. Текущий первичный узел можно определить по столбцу MEMBER_ROLE в таблице Performance Schema replication_group_members.

Если все узлы не работают под одной и той же версией MySQL Server, можно указать новый первичный узел, который работает под самой низкой версией MySQL Server в группе. Эта мера предосторожности применяется для обеспечения совместимости группы с новыми функциями.

Все неподтвержденные транзакции, на которых ожидает группа, должны быть подтверждены, отменены или прерваны перед завершением операции. Можно указать таймаут от 1 до 3600 секунд (60 минут) для транзакций, выполняющихся при использовании функции. Укажите 0 для отсутствия таймаута (или не указывайте значение таймаута), в этом случае группа ожидает неопределенно долго. Если таймаут не установлен, нет верхнего предела времени ожидания, и новые транзакции могут начинаться в течение этого времени.

При истечении таймаута для любых транзакций, которые еще не достигли стадии подтверждения, сессия клиента отключается, чтобы транзакция не продолжилась. Транзакции, которые достигли стадии подтверждения, могут быть завершены. При установке таймаута также предотвращается начало новых транзакций на первичном узле с этого момента. Явно определенные транзакции (с оператором START TRANSACTION или BEGIN) подпадают под действие таймаута, отключения и блокировки входящих транзакций, даже если они не изменяют данные. Для проверки первичного узла во время работы функции разрешены отдельные операторы, не изменяющие данные, как указано в Разрешенных запросах в соответствии с правилами согласованности.

Передайте server_uuid узла, который должен стать новым первичным узлом группы, выполнив следующее оператор:

SELECT group_replication_set_as_primary(member_uuid);

Можно добавить таймаут, как показано здесь:

SELECT group_replication_set_as_primary(‘00371d66-3c45-11ea-804b-080027337932’, 300)

Для проверки состояния таймаута используйте столбец PROCESSLIST_INFO в таблице Performance Schema threads, например так:

mysql> SELECT NAME, PROCESSLIST_INFO FROM performance_schema.threads
    -> WHERE NAME="thread/group_rpl/THD_transaction_monitor"\G
*************************** 1. row ***************************
            NAME: thread/group_rpl/THD_transaction_monitor
PROCESSLIST_INFO: Group replication transaction monitor: Stopped client connections

Состояние показывает, когда был создан поток мониторинга транзакций, когда новые транзакции были остановлены, когда подключения клиентов с неподтвержденными транзакциями были отключены, и, наконец, когда процесс завершен и новые транзакции снова разрешены.

Во время выполнения действия можно проверить его ход, выполнив приведенный ниже оператор:

mysql> SELECT event_name, work_completed, work_estimated
    -> FROM performance_schema.events_stages_current
    -> WHERE event_name LIKE "%stage/group_rpl%"\G
*************************** 1. row ***************************
    EVENT_NAME: stage/group_rpl/Primary Election: Waiting for members to turn on super_read_only
WORK_COMPLETED: 3
WORK_ESTIMATED: 5

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

Spec-Zone.ru

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