Spec-Zone .ru
спецификации, руководства, описания, API
|
Поскольку GTID-на-основе репликация зависит от транзакций, некоторые функции, иначе доступные в MySQL, не поддерживаются при использовании ее. Этот раздел предоставляет информацию об ограничениях на и ограничениях репликации с GTIDs.
Обновления, включающие нетранзакционные механизмы хранения. При использовании GTIDs, обновлений к
таблицам, используя нетранзакционные механизмы хранения такой как MyISAM
не может сделанный в том же самом операторе или транзакции как
обновления к таблицам, используя транзакционные механизмы хранения такой как InnoDB
.
Это ограничение - то, вследствие того, что обновления к использованию нетранзакционного механизма хранения, смешанного с обновлениями к таблицам, которые используют транзакционный механизм хранения в пределах той же самой транзакции, могут привести к многократному GTIDs, присваиваемому той же самой транзакции. Эта проблема может также произойти по крайней мере в двух других случаях, перечисленных здесь:
Когда ведущее устройство и ведомое использование различные механизмы хранения для их соответствующих версий той же самой таблицы, где один механизм хранения является транзакционным и другой, не.
Когда и ведущее устройство и ведомое устройство используют нетранзакционный
механизм, но используют различные двоичные форматы журналирования (например, когда ведущее устройство
имеет binlog_format=ROW
и ведомое устройство имеет binlog_format=STATEMENT
).
В любом из случаев, только упомянутых, взаимно-однозначное соответствие между транзакциями и GTIDs, повреждается, так что в итоге GTID-на-основе репликация не может функционировать правильно.
CREATE TABLE ... SELECT
операторы. CREATE TABLE ... SELECT
не безопасно для основанной на операторе репликации. При
использовании построчной репликации этот оператор фактически регистрируется как два отдельных события — один для
создания таблицы, и другого для вставки строк от исходной таблицы в новую таблицу, только составленную. Когда
этот оператор выполняется в пределах транзакции, для этих двух событий возможно в некоторых случаях получить тот
же самый идентификатор транзакции, что означает, что транзакция, содержащая вставки, пропускается ведомым
устройством. Поэтому, CREATE TABLE ... SELECT
не поддерживается при использовании
GTID-на-основе репликации.
Временные таблицы. CREATE TEMPORARY
TABLE
и DROP TEMPORARY TABLE
операторы не поддерживаются в транзакциях при использовании
GTIDs (то есть, когда сервер был запущен с --enforce-gtid-consistency
опция). Возможно использовать использование эти
операторы с включенным GTIDs, но только за пределами любой транзакции, и только с autocommit=1
.
Предотвращение выполнения неподдерживаемых операторов. Чтобы предотвратить выполнение операторов, которые
заставили бы GTID-на-основе репликацию перестать работать, все серверы должны быть запущены с --enforce-gtid-consistency
опция, включая GTIDs. Это заставляет операторы
любого из типов, обсужденных ранее в этом разделе перестать работать с ошибкой.
Для получения информации о других необходимых опциях запуска, включая GTIDs, см. Раздел 16.1.3.2, "Устанавливая Репликацию Используя GTIDs".
sql_slave_skip_counter
не поддерживается при использовании GTIDs. Если Вы должны пропустить транзакции, используйте значение ведущего
устройства gtid_executed
переменная вместо этого; см. Вводящие
пустые транзакции для получения дополнительной информации.
Режим GTID и mysqldump. Возможно импортировать сделанное использование дампа mysqldump в MySQL Server, работающий с включенным режимом GTID, при условии, что нет никаких GTIDs в двоичном журнале целевого сервера.
Режим GTID и mysql_upgrade.
Это возможно, но не рекомендуется использовать mysql_upgrade на MySQL Server, работающем с --gtid-mode=ON
, так как mysql_upgrade может произвести изменения в системных
таблицах, которые используют MyISAM
механизм хранения, который является нетранзакционным.