Spec-Zone .ru
спецификации, руководства, описания, API

16.4.1.22. Репликация и Временные таблицы

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

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

  1. Проблема a STOP SLAVE SQL_THREAD оператор.

  2. Использовать SHOW STATUS проверять значение Slave_open_temp_tables переменная.

  3. Если значение не 0, перезапустите ведомый поток SQL с START SLAVE SQL_THREAD и повторите процедуру позже.

  4. Когда значение 0, дайте mysqladmin команду завершения работы, чтобы остановить ведомое устройство.

Временные таблицы и опции репликации. По умолчанию все временные таблицы тиражируются; это происходит, есть ли какое-либо соответствие --replicate-do-db, --replicate-do-table, или --replicate-wild-do-table опции в действительности. Однако, --replicate-ignore-table и --replicate-wild-ignore-table опции соблюдают для временных таблиц.

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