Готовый перевод Mysql 5.6: Replication with Global Transaction Identifiers / Репликация с помощью глобальных идентификаторов транзакций: 16.1.3.4. Ограничения GTID-репликаций

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Следствием зависимости GTID-ориентированной репликации от транзакций, является то, что некоторые функции MySQL не будут доступны при ее использовании. Этот раздел посвещен таким запретам и ограничениям.

Обновление хранилищ, неподдерживающих транзакции. При использовании GTID, одновременное обновление таких хранилищ как MyISAM и InnoDB не может быть произведено в рамках одого выражения или транзакции.

Это ограничение вызвано с тем, что смешанное обновление транзакционных и нетранзакционных хранилищ во время одной транзакции может привести к появлению множества GTID связанных с одной и той же транзакцией.

Такие проблемы могут возникнуть еще и в том случае, если master и slave сервера используют разные типы хранилищ для одной и той же таблицы, где одно из них поддерживает транзакции а другое нет.

В каждом из описанных случаев происходит нарушение связи один-к-одному между GTID и транзакцией, что приводит некорректному функционированию репликации.

CREATE TABLE ... SELECT выражения. CREATE TABLE ... SELECT небезопасны для командо-ориентированной репликации. При использовании строко-ориентированной репликации это действие записывается в виде двух отдельных событий - создание и добавление строк в созданную таблицу. Выполнение этого выражения внутри транзакции, в некоторых случаях может привести к тому, что обе транзакции получат одинаковый идентификатор, что в свою очередь приведет к пропуску операции вставки на slave-сервере. Поэтому выражение CREATE TABLE ... SELECT не поддерживается при использовании GTID-ориентированной репликации.

Временные таблицы. Использование выражение CREATE TEMPORARY TABLE и DROP TEMPORARY TABLE внутри транзакций не поддерживается при использовании GTID (при указании опции --enforce-gtid-consistency). Возможно использование этих выражений только за пределами транзакций и только с autocommit=1.

Ограничение использования неподдерживаемых выражений. Использование таких выражение приведет к нарушению функционирования GTID-репликации. Все сервера должны быть запущены с опцией --enforce-gtid-consistency. Что обеспечит возникновение ошибки при попытке выполнить описанные выше выражения.

Для получения инофрмации о других опциях GTID, см 16.1.3.2 "Настройка репликации с помощью GTID".

При использовании GTID sql_slave_skip_counter не поддерживается. Если нужно пропустить транзакции, используйте gtid_executed на master-сервере; см Внедрение пустых транзакций.

GTID и mysqldump. В MySQL версии 5.6.9 и старше, возможно импортирование слепка сделанного mysqldump на сервер запущенном в GTID-режиме даже если в его бинарном логе нет GTID.

В версиях предшествовавших 5.6.9, в mysqldump не поддерживалась запись глобальных идентификаторов транзакций, для это было необходимо использовать бинарный лог и mysqlbinlog для восстановления GTID. (Ошибка #14797808, Ошибка #14832472)

GTID-режим и mysql_upgrade. В версиях MySQL предшесовавших 5.6.7, процесс mysql_upgrade не имел возможности подключиться к серверу, запущенному с опцией --gtid-mode=ON, до перезапуска с опцией --write-binlog=OFF. (Или с опцией --gtid-mode=OFF для запуска mysql_upgrade, а затем с --gtid_mode=ON ). В версиях MySQL 5.6.7 и старше проблема устранена, опция --write-binlog=OFF присутствует по-умолчанию. (Bug #13833710) Тем не менее рекомендуется избегать таких действий, так как mysql_upgrade может вносить изменения в системные таблицы, использующие механизм MyISAM и как следствие не поддерживающие транзакции.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/45231/179752

Переводчики: nipman

Настройки

Готово:

100.00% КП = 1.0