Spec-Zone.ru › MySQL 8.4

19.1.4.1 Концепции изменения режима репликации

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

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

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

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

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

Транзакция в журнале репликации с источника, работающего на предыдущей версии 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 ANONYMOUS ANONYMOUS Ошибка ANONYMOUS Ошибка Ошибка
gtid_mode = OFF_PERMISSIVE ANONYMOUS ANONYMOUS Ошибка ANONYMOUS <UUID>:<NUMBER> <UUID>:<TAG>:<NUMBER>
gtid_mode = ON_PERMISSIVE Новый GTID ANONYMOUS Новый GTID ANONYMOUS <UUID>:<NUMBER> <UUID>:<TAG>:<NUMBER>
gtid_mode = ON Новый GTID ANONYMOUS Новый 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-8.4-en/replication-mode-change-online-concepts.html

Spec-Zone.ru

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