Известные проблемы с миграцией в База данных Azure для MySQL
В следующих разделах описываются известные проблемы, связанные с миграциями в Базу данных Azure для MySQL.
Проблема миграции схемы для целевого гибкого сервера MySQL версии 8.0
Ошибка. Миграция на гибкий сервер MySQL с подсистемой 8.0.30 или более поздней может завершиться сбоем, когда функция создает невидимые первичные ключи для таблиц InnoDB (см . справочник по MySQL 8.0: 13.1.20.11 Сгенерированные невидимые первичные ключи). При переносе схемы таблицы из источника в целевой объект может возникать сбой при применении изменений во время этапа репликации онлайн-миграции, при повторной попытке миграции или при миграции в целевой объект, где схема была перенесена вручную.
Потенциальное сообщение об ошибке:
- "Неизвестная ошибка".
- "Не удалось создать невидимый первичный ключ. Столбец автоматического приращения уже существует.
- "Столбец "my_row_id" в целевой таблице "имя таблицы" в базе данных "база данных" не существует в исходной таблице".
Ограничение. Миграция на гибкий экземпляр сервера MySQL, где sql_generate_invisible_primary_key включена, не поддерживается DMS.
Обходное решение. Задайте параметр сервера sql_generate_invisible_primary_key для целевого гибкого сервера MySQL значение OFF. Параметр сервера можно найти на панели параметров сервера на вкладке "Все" для целевого гибкого сервера MySQL. Кроме того, удалите целевую базу данных и запустите миграцию DMS, чтобы не иметь несогласованных схем.
Несовместимый режим SQL
Один или несколько несовместимых режимов SQL могут вызвать множество различных ошибок. Ниже приведен пример ошибки вместе с режимами сервера, которые должны рассматриваться при возникновении этой ошибки.
Ошибка: при подготовке таблицы "{table}" в базе данных "{database}" на сервере "{server}" для миграции во время действия "{activity}" произошла ошибка. В результате эта таблица не будет перенесена.
Ограничение. Эта ошибка возникает, если один из следующих режимов SQL установлен на одном сервере, но не на другом сервере.
Решение:
NO_ZERO_DATE
Если значение по умолчанию для даты таблицы или данных равно 000-00-00 в источнике, а целевой сервер имеет набор режимов SQL NO_ZERO_DATE, схема и (или) миграция данных завершается ошибкой. Существует два возможных обходных решения. Первое — изменить значения столбцов по умолчанию, чтобы иметь значение NULL или допустимую дату. Второй вариант — удалить режим NO_ZERO_DATE SQL из глобальной переменной режима SQL.
NO_AUTO_CREATE_USER
При выполнении миграции с исходного сервера MySQL 5.7 на целевой сервер MySQL 8.0, выполняющих миграцию схем подпрограмм, возникают ошибки, если режим SQL no_auto_create_user установлен на исходном сервере MySQL 5.7.
Проблемы с хранением binlog
Ошибка: неустранимая ошибка чтения двоичных журналов. Эта ошибка может указать, что имя файла binlog и /или начальная позиция была указана неправильно.
Ограничение. Эта ошибка возникает, если срок хранения binlog слишком короткий.
Обходное решение. В этом случае можно настроить несколько переменных: binlog_expire_logs_seconds определяет период хранения и удаление двоичных журналов можно предотвратить полностью, установив binlog_expire_logs_auto_purge выключение. В MySQL 5.7 устарела системная переменная expire_logs_days.
Время ожидания получения блокировок таблицы
Ошибка. При попытке получить блокировку чтения на сервере "{server}" для согласованного создания представления произошло исключение.
Ограничение. Эта ошибка возникает при получении блокировки во всех таблицах при включении согласованности транзакций.
Обходное решение. Убедитесь, что выбранные таблицы не блокируются или на них не выполняются длительные транзакции.
Запись более 4 МБ данных в службу хранилища Azure
Ошибка: текст запроса слишком велик и превышает максимально допустимое ограничение.
Ограничение. Эта ошибка, скорее всего, возникает при слишком большом количестве таблиц для миграции (>10 кб). Существует ограничение на 4 МБ для каждого вызова службы служба хранилища Azure.
Обходное решение. Обратитесь к поддержке, создав запрос на поддержку, и мы можем предоставить пользовательские скрипты для доступа к нашим REST API напрямую.
Проблема с повторяющимся вводом ключа
Ошибка: ошибка часто является симптомом времени ожидания, проблем с сетью или масштабирования целевых объектов.
Потенциальное сообщение об ошибке: пакет не удалось записать в таблицу "{table}" из-за ошибки SQL, вызванной целевым сервером. В качестве примера можно привести пакет, содержащий подмножество строк, возвращенных следующим исходным запросом.
Ограничение. Эта ошибка может быть вызвана временем ожидания или сбоем подключения к целевому объекту, что приводит к дубликату первичных ключей. Он также может быть связан с несколькими миграциями в целевой объект, работающий одновременно, или с тестовой рабочей нагрузкой, запущенной в целевом объекте при выполнении миграции. Кроме того, целевой объект может потребовать, чтобы первичные ключи были уникальными, даже если они не требуются для этого источника.
Обходное решение. Чтобы устранить эту проблему, убедитесь, что не выполняются повторяющиеся миграции и что исходные первичные ключи уникальны. Если ошибка сохраняется, обратитесь к поддержке , создав запрос на поддержку, и мы можем предоставить пользовательские скрипты для доступа к нашим REST API напрямую.
Ошибка реплицированной операции с несовпадениями строк
Ошибка. Миграция через Интернет не реплицирует ожидаемое количество изменений.
Потенциальное сообщение об ошибке: произошла ошибка при применении записей к целевому серверу, считываемому из двоичного журнала исходного сервера. Изменения начались с двоичного журнала {mysql-bin.log} и позиции {position} и закончились на двоичном журнале {mysql-bin.log} и позиции {position}. Все записи на исходном сервере до позиции {position} в двоичном журнале {mysql-bin.log} были зафиксированы в целевом объекте.
Ограничение. В источнике были вставлены и удалены операторы в таблицу, а удаления были по очевидному уникальному индексу.
Обходное решение. Мы рекомендуем перенести таблицу вручную.
Ошибка обрезания табличных данных
Ошибка. Столбец перечисления имеет значение NULL в одной или нескольких строках, а целевой режим SQL имеет строгое значение.
Потенциальное сообщение об ошибке: пакет не удалось записать в таблицу "{table}" из-за ошибки усечения данных. Убедитесь, что данные не слишком большие для типа данных столбца таблицы MySQL. Если тип столбца является перечислением, убедитесь, что режим SQL не задан как TRADITIONAL, STRICT_TRANS_TABLES или STRICT_ALL_TABLES и совпадает с исходным и целевым объектом.
Ограничение. Ошибка возникает, когда исторические данные записываются на исходный сервер, когда они имеют определенный параметр, но при изменении данных не могут перемещаться.
Обходной путь. Чтобы устранить проблему, рекомендуется изменить целевой режим SQL на нестрогую или изменить все допустимые значения NULL.
Сбой создания объекта
Ошибка: произошла ошибка после сбоя проверки представления.
Ограничение. Ошибка возникает при попытке перенести представление и таблицу, на которую не может ссылаться представление.
Обходное решение. Рекомендуется переносить представления вручную.
Не удалось найти таблицу
Ошибка: не удалось найти ошибку, так как таблица ссылок не найдена.
Потенциальное сообщение об ошибке: конвейеру не удалось создать схему объекта "{object}" для действия "{activity}" с помощью стратегии MySqlSchemaMigrationViewUsingTableStrategy из-за выполнения запроса.
Ограничение. Ошибка может возникать, когда представление ссылается на таблицу, которая была удалена или переименована, или когда представление было создано с неправильной или неполной информацией. Эта ошибка может произойти, если переносятся подмножества таблиц, но таблицы, от которых они зависят, нет.
Обходное решение. Рекомендуется переносить представления вручную. Проверьте, выбраны ли для миграции все таблицы, на которые ссылаются внешние ключи, и инструкции CREATE VIEW.
Все объединенные соединения разорваны
Ошибка: все подключения на исходном сервере были нарушены.
Ограничение. Ошибка возникает, когда все подключения, приобретенные в начале начальной загрузки, теряются из-за перезапуска сервера, проблем с сетью, тяжелого трафика на исходном сервере или других временных проблем. Эту ошибку нельзя исправить. Кроме того, эта ошибка возникает при попытке перенести сервер во время периода обслуживания.
Обходное решение. Миграция должна быть перезапущена, и мы рекомендуем повысить производительность исходного сервера. Еще одна проблема заключается в сценариях, которые убивают длительные подключения, предотвращают работу этих скриптов.
Нарушение последовательности снимков
Ограничение. Ошибка возникает, когда клиент выполняет DDL во время начальной загрузки экземпляра миграции.
Обходной путь. Чтобы устранить эту проблему, рекомендуется воздержаться от внесения изменений DDL во время начальной загрузки.
Ограничение зарубежного ключа
Ошибка. Ошибка возникает при изменении указанного типа внешнего ключа из таблицы.
Потенциальное сообщение об ошибке. Ссылка на столбец "{pk column 1}" и ссылка на столбец "{fk column 1}" в ограничении внешнего ключа "{key}" несовместимы.
Ограничение. Ошибка может привести к сбою миграции схемы таблицы, так как столбец PK в таблице 1 может быть несовместим с столбцом FK в таблице 2.
Решение. Чтобы устранить эту проблему, рекомендуется удалить внешний ключ и повторно создать его после завершения процесса миграции.