Spec-Zone.ru › MySQL 9.2

19.1.3.6 Репликация из источника без GTID на реплику с GTID

Вы можете настроить каналы репликации для присвоения GTID реплицируемым транзакциям, которые ещё не имеют его. Эта функция позволяет осуществлять репликацию из источника сервера, на котором не включены GTID и не используется репликация на основе GTID, на реплику, на которой включены GTID. Если возможно включить GTID на реплицируемом сервере источника, как описано в разделе 19.1.4 «Изменение режима GTID на онлайн-серверах», используйте этот подход вместо этого. Эта функция предназначена для серверов источника репликации, на которых невозможно включить GTID. Обратите внимание, что, как и в стандартной репликации MySQL, эта функция не поддерживает репликацию из серверов MySQL-источника, более ранних, чем предыдущая версия, поэтому MySQL 9.1 является самым ранним поддерживаемым источником для реплики MySQL 9.2.

Вы можете включить присвоение GTID на канале репликации, используя параметр ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS оператора CHANGE REPLICATION SOURCE TO. LOCAL присваивает GTID, включая собственный UUID реплики (настройка server_uuid). uuid присваивает GTID, включая указанный UUID, например, настройку server_uuid для сервера репликации-источника. Использование нелокального UUID позволяет различать транзакции, которые возникли на реплике и на источнике, а также, для реплики с несколькими источниками, транзакции, возникшие на разных источниках. Если какие-либо из транзакций, отправленных источником, уже имеют GTID, этот GTID сохраняется.

Важно

Реплика, настроенная с ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS на любом канале, не может быть повышена для замены сервера репликации-источника в случае необходимости failover, а резервная копия, взятая с реплики, не может быть использована для восстановления сервера репликации-источника. Такое же ограничение применяется к замене или восстановлению других реплик, которые используют ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS на любом канале.

Реплика должна иметь gtid_mode=ON , и это значение нельзя изменить позже, если вы не установите ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS=OFF. Если сервер реплики запускается без включенных GTID и с установленным ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS для каких-либо каналов репликации, настройки не меняются, но в журнал ошибок записывается сообщение об ошибке, объясняющее, как исправить ситуацию.

Для реплики с несколькими источниками вы можете смешать каналы, которые используют ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, и каналы, которые этого не делают. Каналы, специфичные для Group Replication, не могут использовать ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, но асинхронный канал репликации для другого источника на экземпляре сервера, являющимся членом группы Group Replication, может это сделать. Для канала на члене группы Group Replication не следует указывать имя группы Group Replication в качестве UUID для создания GTID.

Использование ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS на канале репликации не равнозначно введению репликации на основе GTID для канала. Набор GTID (gtid_executed) с реплики, настроенной с ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, не должен передаваться на другой сервер или сравниваться с набором gtid_executed другого сервера. GTID, присвоенные анонимным транзакциям, и выбранный вами UUID имеют значение только для собственного использования этой реплики. Исключением является любая последующая реплика этой реплики, на которой вы включили ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, и любые серверы, созданные из резервной копии этой реплики.

Если вы настроите какие-либо последующие реплики, на этих серверах не будет включено ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS. Только реплике, которая получает транзакции непосредственно из сервера-источника без GTID, необходимо установить ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS на соответствующем канале репликации. Между этой репликой и её последующими репликами вы можете сравнивать наборы GTID, выполнять failover с одной реплики на другую и использовать резервные копии для создания дополнительных реплик, как и в любой топологии репликации на основе GTID. ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS используется, когда транзакции принимаются с сервера-источника без GTID за пределами этой группы.

Канал репликации, использующий ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, имеет следующие отличия в поведении от репликации на основе GTID:

  • GTID присваиваются реплицируемым транзакциям при их применении (если они ещё не имели GTID). Обычно GTID присваивается на сервере источника репликации при подтверждении транзакции и отправляется реплике вместе с транзакцией. На реплике с несколькими потоками это означает, что порядок GTID необязательно соответствует порядку транзакций, даже если replica_preserve_commit_order = 1.

  • Параметры SOURCE_LOG_FILE и SOURCE_LOG_POS оператора CHANGE REPLICATION SOURCE TO используются для позиционирования потока ввода/вывода репликации (приёмник), а не параметр SOURCE_AUTO_POSITION.

  • Оператор SET GLOBAL sql_replica_skip_counter используется для пропуска транзакций на канале репликации, настроенном с ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, а не методом подтверждения пустых транзакций. Инструкции см. в разделе 19.1.7.3 «Пропуск транзакций».

  • Параметры UNTIL SQL_BEFORE_GTIDS и UNTIL_SQL_AFTER_GTIDS оператора START REPLICA для канала использовать нельзя.

  • Функция WAIT_FOR_EXECUTED_GTID_SET() работает на уровне сервера и может использоваться для ожидания любых последующих реплик сервера, у которых включено ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS. Для ожидания, пока канал с включенным ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS догонит источник, который не использует GTID, используйте функцию SOURCE_POS_WAIT().

Таблица Performance Schema replication_applier_configuration отображает, присваиваются ли GTID анонимным транзакциям на канале репликации, какой UUID используется и является ли это UUID сервера реплики (LOCAL) или пользовательский UUID (UUID). Информация также записывается в репозитории метаданных приложения. Оператор RESET REPLICA ALL сбрасывает настройку ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, но оператор RESET REPLICA — нет.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/replication-gtids-assign-anon.html

Spec-Zone.ru

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