Spec-Zone.ru › MySQL 9.2

19.5.1.32 Репликация и временные таблицы

В MySQL 9.2, когда binlog_format установлено в значение ROW или MIXED, операторы, использующие только временные таблицы, не регистрируются на источнике, и поэтому временные таблицы не реплицируются. Операторы, которые включают смесь временных и постоянных таблиц, регистрируются на источнике только для операций с постоянными таблицами, а операции с временными таблицами не регистрируются. Это означает, что на реплике никогда не будет временных таблиц, которые могут быть потеряны в случае непредвиденной остановки реплики. Более подробная информация о репликации на основе строк и временных таблиц приведена в Репликация временных таблиц на основе строк.

Когда binlog_format установлено в значение STATEMENT, операции с временными таблицами регистрируются на источнике и реплицируются на реплике, при условии, что операторы, включающие временные таблицы, могут быть безопасно зарегистрированы с использованием формата на основе операторов. В этом случае потеря реплицированных временных таблиц на реплике может быть проблемой. В режиме репликации на основе операторов операторы CREATE TEMPORARY TABLE и DROP TEMPORARY TABLE не могут использоваться внутри транзакции, процедуры, функции или триггера, когда GTID используются на сервере (то есть, когда переменная системы enforce_gtid_consistency установлена в значение ON). Они могут использоваться вне этих контекстов при использовании GTID, при условии, что autocommit=1 установлено.

Из-за различий в поведении между режимом репликации на основе строк или смешанным режимом и режимом репликации на основе операторов в отношении временных таблиц вы не можете переключать формат репликации во время выполнения, если изменение относится к контексту (глобальному или сессионному), который содержит открытые временные таблицы. Более подробная информация приведена в описании параметра binlog_format.

Безопасная остановка реплики при использовании временных таблиц. В режиме репликации на основе операторов временные таблицы реплицируются, за исключением случаев, когда вы останавливаете сервер реплики (а не только потоки репликации) и у вас есть реплицированные временные таблицы, открытые для использования в обновлениях, которые еще не были выполнены на реплике. Если вы остановите сервер реплики, временные таблицы, необходимые для этих обновлений, больше не будут доступны при повторном запуске реплики. Чтобы избежать этой проблемы, не останавливайте реплику, пока у нее открыты временные таблицы. Вместо этого используйте следующую процедуру:

  1. Выполните оператор STOP REPLICA SQL_THREAD.

  2. Используйте SHOW STATUS, чтобы проверить значение переменной состояния Replica_open_temp_tables.

  3. Если значение не равно 0, перезапустите поток SQL репликации с помощью START REPLICA SQL_THREAD и повторите процедуру позже.

  4. Когда значение равно 0, выполните команду mysqladmin shutdown для остановки реплики.

Временные таблицы и параметры репликации. По умолчанию при репликации на основе операторов все временные таблицы реплицируются; это происходит независимо от наличия соответствующих параметров --replicate-do-db, --replicate-do-table или --replicate-wild-do-table. Однако параметры --replicate-ignore-table и --replicate-wild-ignore-table учитываются для временных таблиц. Исключением является то, что для правильного удаления временных таблиц в конце сессии реплика всегда реплицирует оператор DROP TEMPORARY TABLE IF EXISTS, независимо от правил исключения, которые обычно применяются для указанной таблицы.

Рекомендуемой практикой при использовании репликации на основе операторов является назначение префикса для эксклюзивного использования при именовании временных таблиц, которые вы не хотите реплицировать, а затем использование параметра --replicate-wild-ignore-table для соответствия этому префиксу. Например, вы можете дать всем таким таблицам имена, начинающиеся с norep (таким как norepmytable, norepyourtable и т. д.), а затем использовать --replicate-wild-ignore-table=norep% для предотвращения их репликации.

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

Spec-Zone.ru

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