Spec-Zone.ru › MySQL 9.2

19.1.4.1 Понятия о режиме репликации

Перед установкой режима репликации для сервера в онлайн-режиме важно понять ключевые понятия репликации. Этот раздел объясняет эти понятия и является необходимым к прочтению перед попыткой изменить режим репликации онлайн-сервера.

Режимы репликации в MySQL используют различные методы для идентификации записанных транзакций. Типы транзакций, используемые репликацией, перечислены здесь:

  • Транзакция GTID идентифицируется глобальным идентификатором транзакции (GTID), который принимает одну из двух форм: UUID:NUMBER или UUID:TAG:NUMBER. Каждая транзакция GTID в двоичном журнале предваряется Gtid_log_event. Транзакцию GTID можно адресовать либо по ее GTID, либо по имени файла, в котором она записана, и ее позиции в этом файле.

  • Анонимная транзакция не имеет GTID; MySQL 9.2 гарантирует, что каждая анонимная транзакция в журнале предваряется Anonymous_gtid_log_event. (В старых версиях MySQL анонимная транзакция не предварялась никаким конкретным событием.) Анонимную транзакцию можно адресовать только по имени файла и позиции.

При использовании GTID вы можете воспользоваться автоматическим позиционированием GTID и автоматическим переключением, а также использовать WAIT_FOR_EXECUTED_GTID_SET(), session_track_gtids и таблицы Performance Schema для отслеживания реплицированных транзакций (см. Раздел 29.12.11, «Таблицы репликации Performance Schema»).

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

Для изменения режима репликации онлайн необходимо установить переменные gtid_mode и enforce_gtid_consistency с помощью учетной записи, имеющей достаточные привилегии для установки глобальных системных переменных; см. Раздел 7.1.9.1, «Привилегии на системные переменные». Разрешенные значения для gtid_mode перечислены здесь, в порядке, с их значениями:

  • OFF: Могут быть реплицированы только анонимные транзакции.

  • OFF_PERMISSIVE: Новые транзакции анонимные; реплицированные транзакции могут быть либо GTID, либо анонимными.

  • ON_PERMISSIVE: Новые транзакции используют GTID; реплицированные транзакции могут быть либо GTID, либо анонимными.

  • ON: Все транзакции должны иметь GTID; анонимные транзакции не могут быть реплицированы.

Возможно наличие серверов, использующих анонимные и серверов, использующих транзакции GTID, в одной и той же топологии репликации. Например, источник, где gtid_mode=ON, может реплицироваться на реплику, где gtid_mode=ON_PERMISSIVE.

Репликация с источника, использующего gtid_mode=ON, предоставляет возможность использования автоматического позиционирования GTID, настроенного с помощью параметра SOURCE_AUTO_POSITION оператора CHANGE REPLICATION SOURCE TO. Топология репликации, используемая в настоящее время, влияет на возможность включения автоматического позиционирования, поскольку эта функция основана на GTID и несовместима с анонимными транзакциями. Сильно рекомендуется убедиться, что в топологии не осталось анонимных транзакций перед включением автоматического позиционирования; см. Раздел 19.1.4.2, «Включение транзакций GTID онлайн».

В следующей таблице показаны допустимые сочетания gtid_mode и автоматического позиционирования на источнике и реплике. Значение каждого элемента следующие:

  • Y: Значения gtid_mode на источнике и на реплике совместимы.

  • N: Значения gtid_mode на источнике и на реплике несовместимы.

  • *: Автоматическое позиционирование может быть использовано с этим сочетанием значений.

Таблица 19.1 Допустимые сочетания gtid_mode источника и реплики

Таблица 19.1 Допустимые сочетания gtid_mode источника и реплики

gtid_mode

Источник OFF

Источник OFF_PERMISSIVE

Источник ON_PERMISSIVE

Источник ON

Реплика OFF

Y

Y

N

N

Реплика OFF_PERMISSIVE

Y

Y

Y

Y*

Реплика ON_PERMISSIVE

Y

Y

Y

Y*

Реплика ON

N

N

Y

Y*


Текущее значение gtid_mode также влияет на gtid_next. Следующая таблица показывает поведение сервера для сочетаний различных значений gtid_mode и gtid_next. Значение каждого элемента следующие:

  • ANONYMOUS: Сгенерировать анонимную транзакцию.

  • Error: Сгенерировать ошибку и не выполнить SET GTID_NEXT.

  • UUID:NUMBER: Сгенерировать GTID со указанным UUID:NUMBER.

  • UUID:TAG:NUMBER: Сгенерировать GTID со указанным UUID:TAG:NUMBER.

  • New GTID: Сгенерировать GTID с автоматически сгенерированным номером.

Таблица 19.2 Допустимые сочетания gtid_mode и gtid_next

Таблица 19.2 Допустимые сочетания gtid_mode и gtid_next
gtid_next = AUTOMATIC (двоичный лог включен) gtid_next = AUTOMATIC (двоичный лог выключен) gtid_next = AUTOMATIC:<TAG> gtid_next = ANONYMOUS gtid_next = <UUID>:<NUMBER> gtid_next = <UUID>:<TAG>:<NUMBER>
gtid_mode = OFF АНОНИМНАЯ АНОНИМНАЯ Ошибка АНОНИМНАЯ Ошибка Ошибка
gtid_mode = OFF_PERMISSIVE АНОНИМНАЯ АНОНИМНАЯ Ошибка АНОНИМНАЯ <UUID>:<NUMBER> <UUID>:<TAG>:<NUMBER>
gtid_mode = ON_PERMISSIVE Новый GTID АНОНИМНАЯ Новый GTID АНОНИМНАЯ <UUID>:<NUMBER> <UUID>:<TAG>:<NUMBER>
gtid_mode = ON Новый GTID АНОНИМНАЯ Новый GTID Ошибка <UUID>:<NUMBER> <UUID>:<TAG>:<NUMBER>

Когда двоичное протоколирование не используется, и gtid_next имеет значение AUTOMATIC, то GTID не генерируется.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/replication-mode-change-online-concepts.html

Spec-Zone.ru

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