Spec-Zone.ru › MySQL 5.7

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

Обсуждение в следующих параграфах не применяется, когда binlog_format=ROW, так как в этом случае временные таблицы не реплицируются; это означает, что на реплике никогда не будет временных таблиц, которые могут быть потеряны в случае непредвиденной остановки реплики. Остальная часть этого раздела применяется только при использовании репликации на основе операторов или смешанного формата. Потеря реплицированных временных таблиц на реплике может быть проблемой, когда binlog_format равно STATEMENT или MIXED, для операторов, включающих временные таблицы, которые могут быть безопасно записаны с использованием формата на основе операторов. Для получения дополнительной информации о репликации на основе строк и временных таблицах см. Репликация временных таблиц на основе строк.

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

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

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

  3. Если значение не равно 0, перезапустите поток SQL репликации с помощью START SLAVE 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-5.7-en/replication-features-temptables.html

Spec-Zone.ru

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