Глава 10. Мастер миграции базы данных

MySQL Workbench обеспечивает способность мигрировать ODBC-базы данных к MySQL.

Это не исчерпывающий список. Следующие разделы обсуждают эти и дополнительные возможности миграции.

Установка может быть самым сложным аспектом использования мастера MySQL Workbench Migration. Есть раздел, который описывает подготовку требований ODBC для Linux, macOS и Microsoft Windows и другой раздел, который поясняет условия установки для каждого RDBMS.

10.1. Общие требования к установке

MySQL Workbench Migration Wizard использует ODBC, чтобы соединиться с исходной базой данных, за исключением MySQL. Вам будет нужен установленный драйвер ODBC, который соответствует базе данных, от которой вы хотите мигрировать. Например, PostgreSQL может мигрировать с драйвером psqlodbc ODBC driver, Microsoft SQL Server может мигрировать со своим драйвером Microsoft SQL Server driver в Windows или FreeTDS в Linux и macOS.

Следующие данные показывают общие компоненты, вовлеченные в связь ODBC: драйвер ODBC для сервера MySQL и другой системы управления реляционными базами данных, ODBC Driver Manager и MySQL Workbench.

Рис. 10.1. Схема установки миграции MySQL Workbench

Content is described in the surrounding text.

Определяя источник RDBMS, можно использовать источник данных, формируемый внешне, или предоставить отдельные параметры связи MySQL Workbench. Если вам уже формировали источник данных ODBC в вашей системе, то можно использовать это в MySQL Workbench.

Процесс миграции не поддерживает источник или цель для связей через SSH.

Обход должен настроить зашифрованный тоннель, а затем рассматривать цель MySQL как стандартную TCP (незашифрованную) связь.

10.1.1. Библиотеки ODBC

Эта секция может быть пропущена, используя MySQL Workbench от Oracle.

Библиотека ODBC Driver Manager должна присутствовать. Windows и macOS обеспечивают ее.

Linux

iODBC: MySQL Workbench от Oracle уже включает iODBC и никакое дополнительное действие не требуется. Если вы собираете пакет сами, необходимо установить iODBC или unixODBC. iODBC рекомендуется. Можно пользоваться библиотекой iODBC, обеспеченной дистрибутивом, устанавливая пакет libiodbc2 на Debian или libiodbc в RPM.

pyodbc: модуль Python, используемый MySQL Workbench, чтобы взаимодействовать с ODBC, может использоваться, чтобы мигрировать базы данных ODBC, такие как PostgreSQL и DB2. В Windows и macOS это включено в Workbench. В Linux исполняемые модули от Oracle также включают pyodbc.

При использовании самособранных модулей удостоверьтесь, что у вас есть последняя версия, и что она собрана с библиотекой менеджера ODBC, которую вы выбрали. С версии 3.0.6 pyodbc собирается с unixODBC по умолчанию. Если вы собираете с iODBC, необходимо выполнить следующие шаги:

  1. Для компилирования удостоверьтесь, что вы установили заголовки iODBC. Для Linux имя зависит от диспетчера пакетов вашей системы, но общие названия libiodbc-devel (RPM) или libiodbc2-dev (Debian). Для macOS заголовки идут с системой, и никакое дополнительное действие не требуется для этого шага.

  2. В исходном каталоге pyodbc отредактируйте файл setup.py и около строки 157 замените settings['libraries'].append('odbc') на settings['libraries'].append('iodbc').
  3. Выполните следующую команду как пользователь root: CFLAGS=`iodbc-config --cflags` LDFLAGS=`iodbc-config --libs` python setup.py install

10.1.2. Драйверы ODBC

Для каждого RDBMS вам нужен его соответствующий драйвер ODBC, который должен также быть установлен на той же самой машине, что и MySQL Workbench. Его обычно предоставляет производитель RDBMS, но в некоторых случаях его могут также предоставить сторонние продавцы или проекты с открытым исходным кодом.

Операционные системы обычно обеспечивают графический интерфейс, чтобы помочь установить драйверы ODBC и источники данных. Используйте это, чтобы установить драйвер (заставьте менеджера ODBC видеть недавно установленный драйвер ODBC). Можно также использовать его, чтобы создать источник данных для определенного случая базы данных, используя ранее установленный драйвер. Как правило, необходимо обеспечить название источника данных (DSN), в дополнение к IP сервера базы данных, порту, имени пользователя и иногда базу данных, к которой у пользователя есть доступ.

Если MySQL Workbench будет в состоянии определить местонахождение менеджера ODBC GUI для вашей системы, то кнопка Open ODBC Administrator на странице обзора мастера миграции откроет его.

Архитектура драйвера ODBC.

Так как драйвер ODBC должен быть установлен на клиентской стороне, вам будет нужен драйвер ODBC, который поддерживает вашу операционную систему клиента и архитектуру. Например, если вы управляете MySQL Workbench в Linux x64, тогда вам нужен драйвер Linux x64 ODBC. В macOS MySQL Workbench строится как 32-битное приложение, таким образом, вам нужны 32-битные драйверы.

10.2. Обзор миграции

Migration Wizard выполняет следующие шаги, мигрируя базу данных к MySQL:

  1. Соединяет с источником RDBMS и получает список доступных баз данных/схем.

  2. Перепроектирует выбранную базу данных/схемы во внутреннее представление, определенное для источника RDBMS. Этот шаг также выполнит переименование объектов/схем в зависимости от типа метода отображения имени объекта, который выбран.
  3. Автоматически мигрирует объекты RDBMS в конкретные объекты MySQL.

    1. Создаются целевые объекты схемы.

      1. Столбцы для каждой таблицы копируются.

        1. Типы данных отображаются к типам данных MySQL.

        2. Значения по умолчанию отображаются к поддержанным значениям по умолчанию MySQL, если это возможно.

      2. Индексы преобразовываются.

      3. Primary Keys преобразовываются.
      4. Триггеры копируются и комментируются, если источник не MySQL.

    2. Foreign Keys для всех таблиц (всех схем) преобразовываются.

    3. Объекты представления копируются и комментируются, если источник не MySQL.
    4. Хранимые процедуры и функциональные объекты копируются и комментируются, если источник не MySQL.

  4. Обеспечивается возможность рассмотреть изменения для редактирования и исправления ошибок в объектах.

  5. Создаются объекты в целевом сервере MySQL. Если есть ошибки, можно возвратиться к предыдущему шагу, исправить их и повторить целевое создание.
  6. Копируются данные таблиц из источника в MySQL.

MySQL Workbench оказывает поддержку для перемещения от некоторых определенных продуктов RDBMS. Мастер миграции обеспечит лучшие результаты, мигрируя от таких продуктов. Однако в некоторых случаях другие неподдержанные продукты базы данных могут также мигрироваться при помощи универсальной поддержки БД, пока у вас есть драйвер ODBC. В этом случае миграция будет менее автоматической, но тем не менее должна работать.

10.2.1. Визуальный справочник по выполнению миграции базы данных

Этот пример мигрирует базу данных Microsoft SQL Server к MySQL и включает изображение для каждого шага.

В MySQL Workbench выберите Database и Migrate, чтобы открыть мастера миграции и показать обзор миграции.

Overview

Рис. 10.2. Миграция в MySQL Workbench: обзор

Content is described in the surrounding text.

Это описывает предпосылки и требования, которые должны быть поняты прежде, чем продолжить. Опция Open ODBC Administrator загрузит odbcad32.exe и используется, чтобы подтвердить, что драйвер ODBC для SQL Server установлен и сделать изменения конфигурации в случае необходимости.

Нажмите Start Migration.

Исходный выбор

Выберите источник, который мигрирует к MySQL. Выберите Database System, которая мигрирует, другие параметры связи изменятся соответственно.

Рис. 10.3. Миграция MySQL Workbench: исходный выбор (параметры)

Content is described in the surrounding text.

Целевой выбор

Цель это база данных MySQL, которая будет содержать недавно мигрировавшую базу данных. Текущие подключения Workbench MySQL будут доступны здесь или можно выбрать Manage DB Connections, чтобы создать новую связь.

Рис. 10.4. Миграция MySQL Workbench: Целевой выбор

Content is described in the surrounding text.

Список схем

Список Схем получается от обоих RDBMS, входной и выходной. Это автоматизированный информационный шаг, который сообщает, что связанные со связью ошибки и/или общую информацию. Нажмите Next.

Рис. 10.5. MySQL Workbench: список схем

Content is described in the surrounding text.

Выбор схем

Выберите схемы, которые вы хотите мигрировать.

Опции "Schema Name Mapping Method" для миграции с Microsoft SQL Server:

Рис. 10.6. MySQL Workbench: Выбор схем

Content is described in the surrounding text.

Перепроектируйте источник

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

Рис. 10.7. MySQL Workbench: Перепроектируйте источник

Content is described in the surrounding text.

Исходные объекты

Обнаруженные на стадии Reverse Engineer Source объекты показаны и сделаны доступными. Результаты включают таблицу, представление и сохраненные подпрограммы, только объекты таблицы выбраны по умолчанию.

Рис. 10.8. MySQL Workbench: Исходные объекты

Content is described in the surrounding text.

Миграция

Процесс миграции теперь преобразовывает выбранные объекты в совместимые объекты MySQL.

Рис. 10.9. MySQL Workbench: миграция

Content is described in the surrounding text.

Ручное редактирование

Есть три секции, чтобы отредактировать, которые выбраны при помощи блока View справа вверху. Кнопка Show Code and Messages доступна с каждым представлением, она покажет произведенный код MySQL, который соответствует выбранному объекту.

Целевые варианты создания

Схема может быть создана добавлением к целевой RDBMS, создав файл скрипта SQL или обоими способами.

Рис. 10.13. MySQL Workbench: Целевые варианты создания

Content is described in the surrounding text.

Создание схемы

Теперь схема создается. Полный журнал также доступен здесь.

Рис. 10.14. MySQL Workbench: Создание схемы

Content is described in the surrounding text.

Создайте целевые результаты

Произведенные объекты в этом примере перечисляются наряду с сообщениями об ошибках, если они есть.

Код миграции может также быть рассмотрен и отредактирован здесь. Чтобы внести изменения, выберите объект, отредактируйте код запроса и затем нажмите Apply. Повторите этот процесс для каждого объекта, который будет отредактирован. Наконец, нажмите Recreate Objects, чтобы сохранить результаты. Recreate Objects требуется, чтобы сохранить любые изменения здесь. Это тогда выполнит предыдущий шаг миграции (Create Schema) с измененным кодом, и затем продолжит процесс миграции. Это также означает, что ранее сохраненная схема будет сброшена.

Рис. 10.15. MySQL Workbench: создайте целевые результаты

Content is described in the surrounding text.

Установка передачи данных

Следующий шаг передает данные из источника RDBMS к целевой базе данных MySQL. Экран установки включает следующие варианты:

Data Copy:

Опции:

Рис. 10.16. MySQL Workbench: установка передачи данных

Content is described in the surrounding text.

Оптовая передача данных

В зависимости от выбранного выбора это передаст данные целевой RDMS (по умолчанию), произведет простой скрипт для передачи данных онлайн или произведет скрипт, чтобы выполнить на исходном хосте, который тогда производит zip-файл, содержащий скрипт передачи и данные, который будет выполнен на целевом хосте. Произвольно, просмотрите журнал в поисках ошибок.

Рис. 10.17. MySQL Workbench: оптовая передача данных

Content is described in the surrounding text.

Отчет о миграции

И наконец, отчет о миграции доступен и суммирует весь процесс миграции.

Рис. 10.18. MySQL Workbench: Отчет о миграции

Content is described in the surrounding text.

Нажим Finish закроет окно миграции. Если вы выбрали копию онлайн, база данных может теперь быть просмотрена в MySQL Workbench SQL editor.

Рис. 10.19. MySQL Workbench: просмотр мигрировавшей базы данных

Content is described in the surrounding text.

Если вкладка MySQL Workbench SQL Editor уже открыта, то список схем в Object Browser должен быть освежен, чтобы просмотреть недавно импортированную схему.

10.2.2. Миграция от поддержанных баз данных

Когда поддержанный продукт RDBMS будет использован для миграции, мастер MySQL Workbench Migration Wizard автоматически преобразует столько информации, сколько может, но все еще надо вручную редактировать автоматически перенесенную схему для трудных случаев или когда отображение по умолчанию не такое.

Вообще говоря, только информация о таблице и ее данные автоматически преобразовываются в MySQL. Кодовые объекты, такие как представления, хранимые процедуры и триггеры, нет. Но поддержанные данные RDBMS будут получены и показаны в мастере. Можно тогда вручную преобразовать их или сохранить для преобразования в более позднее время.

Следующие продукты RDBMS и версии в настоящее время проверяются и поддерживаются мастером MySQL Workbench Migration Wizard, хотя другие продукты RDBMS могут быть также перенесены, см. раздел 10.2.3:

10.2.3. Миграция от неподдержанных баз данных

Большинство баз данных ODBC может мигрировать, используя универсальную поддержку БД. В этом случае кодовые объекты не будут восстановлены из исходной базы данных, переносятся только таблицы и данные.

Используя универсальную поддержку, типы данных столбцов отображены, используя следующие шаги:

  1. Это ищет первый вход в Generic Datatype Mapping Table для исходного имени типа. Если длина/диапазоны входа будет соответствовать столбцу источника, это выберет тот тип. Иначе это продолжает искать.

  2. Если никакие совпадения не были найдены в универсальной таблице, то система пытается непосредственно отобразить исходный тип к типу MySQL с тем же самым именем.
  3. Если исходное имя типа не соответствует ни одному из типов данных MySQL, то оно не преобразовывается, и ошибка будет зарегистрирована. Отсюда можно определить целевой тип данных на шаге Manual Object Editing в мастере.

10.3. Концептуальные эквиваленты DBMS

Следующая таблица показывает сравнение между каждым продуктом DBMS, поддержанным мастером Migration Wizard и MySQL.

Таблица 10.1. Концептуальные эквиваленты между поддержанными продуктами DBMS и MySQL

Понятие MS SQL Server Sybase ASE PostgreSQL MySQL Примечание
Идентификация Да Да Да Да
Auto_Increment Да Да Да Да PostgreSQL использует последовательности для Auto_Increment.
Резервная копия Да Да Да Да См. MySQL Enterprise Backup.
Catalog Да Да Да N/A Можно отобразить каталог в схему и пропустить ownerobject, использовать владельца в качестве названия схемы или слить владельца и имя объекта вместе.
Constraints Да Да Да Да
Data Dictionary N/A
Database Да Да Да Да
Database Instance
Дамп Да Да Да Да mysqldump
События Да Да Да Да
Foreign Keys Да Да Да Да
Full Text Search Да Да Да Да В InnoDB, начиная с MySQL Server 5.6 и во всех версиях MyISAM.
Индекс Да Да Да Да
Information Schema Да No Да Да
Чувствительность к регистру имен объектов Зависит от сопоставления Зависит от сопоставления Смешано Смешано MySQL: чувствительность имен базы данных, таблиц и триггеров зависит от операционной системы, другие имена объектов нечувствительны к регистру. PostgreSQL: соответственно стандарту SQL-99, непроцитированные имена объектов рассматриваются как нечувствительные к регистру, в то время как цитированные имена объектов чувствительные к регистру. В отличие от стандарта, непроцитированные имена объектов преобразовываются в строчные буквы вместо верхнего регистра.
Соглашения об именах объекта Да Да Да Да
Packages N/A N/A N/A N/A
Разделение Да Да Да Да
Performance Schema N/A N/A Да Да
Права доступа и управления Да Да Да Да
Primary Key Да Да Да Да
Ссылочная целостность Да Да Да Да Sybase ASE: ссылочная целостность только через триггеры.
Репликация Да Да Да Да
Роли Да Да Да N/A Роли не доступны в MySQL на уровне базы данных.
Schema Да Да* Да Да Эквивалентно базе данных в MySQL. Sybase ASE: схемы соответствуют именам пользователей.
Sequences Да* Да* Да Да* Автономные объекты последовательности не поддерживаются в MySQL. Схожая функциональность может быть получена со столбцами IDENTITY в MSSQL и AUTO_INCREMENT в MySQL.
Режимы SQL Да Да Да SET_ANSI_* в MSSQL
Механизмы хранения N/A N/A Да* Да PostgreSQL поддерживает и использует только один механизм хранения (Postgresql). Другие компании добавили дополнительные механизмы хранения к PostgreSQL.
Stored Procedures Да Да Да Да
Синонимы N/A N/A N/A N/A
Таблица Да Да Да Да
Табличное простанство Да Да* Да N/A MSSQL группирует таблицы в схемах (что-то вроде CREATE TABLESPACE). Sybase ASE: таблицы сгруппированы в схемах, которые больше похожи на имена пользователей.
Временные таблицы Да Да Да Да
Транзакции Да Да Да Да
Триггеры Да Да Да Да
UDF Да Да Да Да
Unicode Да Да Да Да
Unique Key Да Да Да Да
Пользователь Да Да Да Да
Представления Да Да Да Да

Обработка структурных различий Microsoft SQL Server и MySQL.

База данных Microsoft SQL Server составлена из одного каталога и одной или более схем. MySQL только поддерживает одну схему для каждой базы данных (или скорее база данных MySQL это схема), таким образом, это различие в дизайне должно быть запланировано. Mастер Migration Wizard должен знать, как обращаться с миграцией схем для исходной базы данных (Microsoft SQL Server). Это может сохранить все схемы как есть (мастер миграции создаст одну базу данных на схему) или слить их в единственную базу данных MySQL. Дополнительные варианты включают: удалить названия схемы (мастер миграции будет обращаться с возможными столкновениями имен, которые могут появиться по ходу дела) или добавить название схемы к именам объектов базы данных как префикс.

10.4. Миграция Microsoft Access

Эта опция была добавлена в MySQL Workbench 6.2.0.

Общая информация

Microsoft Windows требуется, потому что драйверы Microsoft Access ODBC доступны только в Windows. Что касается места назначения, сервер MySQL может быть на той же самой машине или в другом месте в вашей сети.

Подготовка базы данных Microsoft Access для миграции

Microsoft Access Microsoft Access хранит информацию отношений/внешнего ключа во внутренней таблице под названием MSysRelationships. Таблица защищена от доступа для чтения даже пользователем Admin, поэтому при попытке мигрировать, не открывая доступ к ней, вы получите ошибку:

[42000] [Microsoft][ODBC Microsoft Access Driver] Record(s)
        cannot be read; no read permission on 'msysobjects'.
        (-1907) (SQLExecDirectW)

Шаги, чтобы предоставить доступ для чтения роли Admin (Microsoft Access 2007):

Запуск мастера MySQL Workbench Migration Wizard

От главного экрана MySQL Workbench можно запустить мастер Migration Wizard, щелкнув по кнопке ( ) в боковой панели Workbench или выбрав из главного меню Database, Migration Wizard.

Рис. 10.22. Страница обзора миграции

Content is described in the surrounding text.

Подготовка драйверов ODBC

Чтобы проверить, что вы установили драйвер ODBC, нажмите Open ODBC Administrator со страницы обзора миграции MySQL Workbench, чтобы открыть системный инструмент ODBC. Затем выберите вкладку Drivers.

Рис. 10.23. Проверка драйверов ODBC для Access

Content is described in the surrounding text.

У MySQL Workbench есть 64-битный исполняемый файл. Драйверы ODBC, которые вы используете, должны иметь ту же самую архитектуру. Если во время миграции вы получаете ошибку ODBC "architecture mismatch between the Driver and Application", вы установили неверную версию MySQL Workbench.

На вкладке User DSN нажмите Add, чтобы создать DSN для вашего файла базы данных.

Рис. 10.24. Добавление нового DSN

Content is described in the surrounding text.

Подготовка исходных параметров

Нажмите Start Migration на странице Overview, чтобы продвинуться на страницу Source Selection. Здесь необходимо предоставить информацию о базе данных Access, с которой вы мигрируете, драйвере ODBC и параметры для связи.

Откройте комбинированное окно Database System для списка поддерживаемых RDBMS и выберите Microsoft Access из списка. Есть другое комбинированное окно ниже Stored Connection. Это перечисляет сохраненные настройки подключения для этой RDBMS. Можно сохранить связи, отметив флажок внизу страницы, наряду с названием связи.

Следующее комбинированное окно выбирает Connection Method. На этот раз мы собираемся выбрать ODBC Data Source из списка. Это позволяет вам выбирать созданные ранее DSN, которые вы формировали в своей системе.

Список DSN имеет все DSN, которые вы определили в своей системе. Выберите тот, который вы создали для базы данных Access.

В поле Default Character Set можно выбрать набор символов базы данных. Если ваша версия Access использует символы western/latin, можно оставить по умолчанию cp1252. Однако, если вы используете локализованную версию Access, необходимо ввести правильный набор символов, используемый выпуском Microsoft Office, иначе данные будут скопированы неправильно.

Рис. 10.25. Исходный выбор Access

Content is described in the surrounding text.

Наконец, нажмите Test Connection, чтобы проверить, может ли связь ODBC быть установлена. Если вы вошли в правильные параметры, то увидите сообщение об успешной попытке подключения.

Подготовка целевых параметров

Затем, настройте целевые параметры базы данных (MySQL), определив параметры, которые соединяются с вашим экземпляром MySQL Server. По окончании нажмите Test Connection, чтобы проверить определение связи.

Рис. 10.26. Целевой выбор базы данных

Content is described in the surrounding text.

Выберите объекты миграции

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

Рис. 10.27. Результат анализа источника

Content is described in the surrounding text.

Надо проверить, что все подходит. Затем Source Objects показывает список объектов, которые были получены и доступны для миграции.

Рис. 10.28. Исходные объекты

Content is described in the surrounding text.

В предыдущем примере мастер миграции обнаружил таблицу и объекты представления для исходной базы данных. Только объект таблицы выбран по умолчанию для миграции. Можно также выбрать объекты представления, но необходимо также предоставить их соответствующий MySQL эквивалентный код позже (никакая автоматическая миграция недоступна для них), таким образом, наш пример оставит представления непроверенными. То же самое касается хранимых процедур, функций и триггеров.

Нажмите Show Selection, чтобы формировать точно, какие объекты вы хотите мигрировать.

Рис. 10.29. Выбор исходных объектов

Content is described in the surrounding text.

Объекты справа будут мигрироваться. Фильтр может отфильтровать список (подстановочные знаки позволены, как продемонстрировано выше). При помощи кнопок стрелки можно отфильтровать объекты, которые вы не хотите мигрировать. Очистите текст фильтра, чтобы проверить полный список выбранных объектов. Наш пример мигрирует все объекты таблицы, таким образом, все они находятся в списке Objects to Migrate и флажок Migrate Table Objects отмечен.

Рассмотрите предложенную миграцию

В этом пункте мастер миграции преобразовывает выбранные объекты в их эквивалентные объекты целевого сервера MySQL, это также производит код MySQL, который должен был создать их. Вам, возможно, придется ждать, прежде чем шаг Manual Editing покажет начальную страницу.

Рис. 10.30. Редактирование вручную: начальная страница

Content is described in the surrounding text.

Блок View изменяет способ, которым показывают мигрировавшие объекты базы данных. Нажмите Show Code, чтобы смотреть и отредактировать произведенный код MySQL, который соответствует выбранному объекту. Кроме того, можно дважды щелкнуть по элементу в дереве объектов, чтобы отредактировать имя объекта или дважды щелкнуть по строке базы данных, чтобы изменить ее название.

Рис. 10.31. Редактирование вручную: все объекты

Content is described in the surrounding text.

Блок View также имеет опцию Column Mappings. Это показывает столбцы таблицы и позволяет вам просматривать и менять отображение типов столбца, значения по умолчанию и другие признаки.

Рис. 10.32. Отображения столбцов

Content is described in the surrounding text.

Создайте объекты базы данных

Теперь откроется страница Target Creation Options.

Рис. 10.33. Целевые варианты создания

Content is described in the surrounding text.

Используйте варианты целевого создания, чтобы выполнить произведенный код в целевой RDBMS или можно сбросить его в файл скрипта SQL. Код SQL будет выполнен на целевом сервере MySQL. Можно рассмотреть его работу на странице Create Schemas.

Рис. 10.34. Создает схемы

Content is described in the surrounding text.

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

Рис. 10.35. Созданы целевые результаты

Content is described in the surrounding text.

Можно отредактировать код миграции, используя код справа и сохранить изменения при нажатии Apply. Если правки были сделаны, все еще необходимо создать объекты с измененным кодом, чтобы выполнить изменения. Это сделано при нажатии Recreate Objects. В этой обучающей программе мы ничего не изменяем, так что оставьте код как есть и переходите к странице Data Transfer Setup.

Передайте данные базе данных MySQL

Следующий шаг передает данные из исходной базы данных Access в вашу недавно созданную целевую базу данных MySQL. Страница Data Transfer Setup позволяет вам формировать этот процесс.

Рис. 10.36. Data Transfer Setup

Content is described in the surrounding text.

Есть два варианта. Первый позволяет вам выполнять живой перенос и/или сбросить данные в пакетный файл, который можно выполнить позже. Другой вариант позволяет вам изменять этот процесс.

Эта обучающая программа использует значения по умолчанию для вариантов на этой странице. Затем данные передаются. В этом пункте соответствующая страница прогресса подтверждает выполняемые задачи.

Рис. 10.37. Оптовая передача данных

Content is described in the surrounding text.

Как только это заканчивается, перейдите на следующую страницу. Вам будет представлена страница отчета, суммирующая целый процесс. Теперь просмотрите и нажмите Finish, чтобы закрыть мастер.

Проверка

Теперь, когда база данных успешно мигрировала, можно рассмотреть результаты. Откройте SQL Editor, который связан с вашим сервером MySQL, затем запросите базу данных. Например, выполните запрос SELECT * FROM northwind.customers, который наполнит сетку результата.

Рис. 10.38. Проверка ваших результатов

Content is described in the surrounding text.

10.5. Миграция Microsoft SQL Server

MySQL Workbench Migration Wizard проверен для следующих версий Microsoft SQL Server: 2000, 2005, 2008 и 2012.

10.5.1. Приготовления

Чтобы быть в состоянии мигрировать от Microsoft SQL Server, гарантируйте следующее:

10.5.2. Драйверы

Microsoft Windows не требует дополнительные драйверы, которые будут устанавливаться и формироваться, но Linux (и macOS) потребуют. Следующие разделы включают конкретные инструкции для каждого типа системы.

10.5.2.1. Microsoft Windows

Microsoft Windows XP и более новые включают по крайней мере одного драйвер ODBC для Microsoft SQL Server, таким образом, дополнительные действия, вероятно, не требуются на вашей системе. Много вариантов драйвера SQL Server существуют, как описано в этой секции.

Можно проверить информацию о драйвере ODBC, запустив Windows ODBC Data Source Administrator, который доступен с домашней страницы мастера миграции MySQL Workbench. Альтернативно, откройте терминал Windows и выполните odbcad32.exe. Откройте вкладку Drivers, чтобы видеть что-то подобное:

Рис. 10.39. Windows ODBC Data Source Administrator: Драйверы SQL Server

Content is described in the surrounding text.

Общие драйверы ODBC, доступные в Windows:

Решите, какой драйвер вы хотите использовать, и помните его имя как показано в ODBC Data Source Administrator. Это собственное имя используется в MySQL Workbench, чтобы соединиться с вашим экземпляром SQL Server.

10.5.2.2. Linux

Подготовка драйверов в Linux.

FreeTDS

FreeTDS version 0.92 или больше требуется. Многие дистрибутивы предлагают более старые версии FreeTDS, таким образом, это, возможно, должно быть установлено отдельно. Кроме того, версия FreeTDS, обеспеченная дистрибутивом, может также быть собрана для неправильной библиотеки ODBC (обычно unixODBC вместо iODBC, с которой работает MySQL Workbench). Из-за этого необходимо будет, вероятно, построить эту библиотеку самому.

Скрипт предоставлен, чтобы собрать FreeTDS, используя варианты, требуемые для MySQL Workbench. Можно найти его в /usr/share/mysql-workbench/extras/build_freetds.sh в Linux или в MySQLWorkbench.app/Contents/SharedSupport/build_freetds.sh в macOS. Чтобы использовать его, выполните эти шаги:

Использование FreeTDS с iODBC.

Собирая FreeTDS для использования с iODBC, это должно быть собрано с командной строкой --enable-odbc-wide. Обеспеченный скрипт build_freetds.sh делает это для вас.

  1. Для компилирования удостоверьтесь, что установили заголовки iODBC. Для Linux имя зависит от диспетчера пакетов вашей системы, но общие названия libiodbc-devel (RPM-системы) или libiodbc2-dev (Debian-системы). Для macOS заголовки идут с системой, и никакое дополнительное действие не требуется для этого шага.

    При использовании Oracle Enterprise Linux, Redhat, CentOS и подобных необходимо настроить хранилище EPEL в yum, чтобы найти пакет libiodbc-devel. См. здесь.

  2. mkdir ~/freetds, чтобы создать каталог в рамках пользовательского корневого каталога.
  3. Скопируйте скрипт build_freetds.sh в ~/freetds.
  4. Получите последние исходные тексты FreeTDS с ftp://ftp.freetds.org/pub/freetds/ и поместите файл .tar.gz в каталог ~/freetds. Удостоверьтесь, что получили версию 0.92 FreeTDS или более новую.
  5. cd ~/freetds
  6. Выполните build_freetds.sh.
  7. После того, как компиляция сделана, установите пакет с помощью make install из пути, данного скриптом.
  8. Установите драйвер, используя ODBC Administrator так, чтобы подсистема ODBC признала его. Откройте ODBC Administrator с вкладки миграции в MySQL Workbench.

    Рис. 10.40. Откройте ODBC Administrator

    Content is described in the surrounding text.

    Название файла драйвера libtdsodbc.so, он расположен в /usr/lib или /usr/local/lib. Например, на вкладке ODBC Drivers нажмите Add Driver и заполните описание (имя) и путь к файлу драйвера. Помните имя, которое вы определяете здесь, поскольку оно будет необходимо позже. Сохраните драйвер.

    Рис. 10.41. ODBC Driver Add/Setup

    Content is described in the surrounding text.

    Только имя файла драйвера требуется, в то время как имя настроечного файла может остаться неопределенным.

  9. Закройте ODBC Administrator и нажмите Start Migration. Для получения информации о создании связи Microsoft SQL Server, используя MySQL Workbench, см. раздел 10.5.3.2.

10.5.2.3. macOS

Посмотрите примечания установки FreeTDS для Linux, раздел 10.5.2.2.

10.5.3. Установка связи

Эта секция сосредотачивается на создании связи с исходным Microsoft SQL Server, потому что создание подключения MySQL является стандартной операцией.

Предпосылка: вы уже установили и формировали необходимый драйвер Microsoft SQL Server на системе с MySQL Workbench.

10.5.3.1. Microsoft Windows

Выберите Microsoft SQL Server как систему баз данных и заполните опции, как описано в этой секции.

Рис. 10.42. SQL Server Connection Parameters: пример в Windows

Content is described in the surrounding text.

Нажмите Test Connection, чтобы подтвердить, что параметры правильны.

10.5.3.2. Linux

Выберите Microsoft SQL Server как исходную систему баз данных и заполните опции, как описано в этой секции.

Рис. 10.43. SQL Server Connection Parameters: пример в Linux

Content is described in the surrounding text.

Параметры связи включают:

Нажмите Test Connection, чтобы подтвердить, что параметры правильны.

10.5.3.3. macOS

Параметры связи подобны Linux, см. раздел 10.5.3.2.

10.5.4. Отображение типов Microsoft SQL Server

Следующая таблица показывает отображение между типами данных Microsoft SQL Server (источник) и MySQL.

Таблица 10.2. Отображение типов

Исходный тип Тип в MySQL Комментарий
INT INT
TINYINT TINYINT Флаг UNSIGNED установлен в MySQL.
SMALLINT SMALLINT
BIGINT BIGINT
BIT TINYINT(1)
FLOAT FLOAT Значение точности используется для размера ресурса хранения в обоих.
REAL FLOAT
NUMERIC DECIMAL
DECIMAL DECIMAL
MONEY DECIMAL
SMALLMONEY DECIMAL
CHAR CHAR/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы CHAR с длиной до 255 знаков. Что-либо большее мигрируется как LONGTEXT.
NCHAR CHAR/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR с длиной до 65535 знаков. Что-либо большее мигрируется к одному из типов TEXT. В MySQL набор символов строки зависит от набора символов столбца вместо типа данных.
VARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR с длиной до 65535 знаков. Что-либо большее мигрируется к одному из типов TEXT.
NVARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR с длиной до 65535 знаков. Что-либо большее мигрируется к одному из типов TEXT. В MySQL набор символов строки зависит от набора символов столбца вместо типа данных.
DATE DATE
DATETIME DATETIME
DATETIME2 DATETIME Диапазон дат в MySQL: от '1000-01-01 00:00:00.000000' до '9999-12-31 23:59:59.999999'. Доли секунды сохранены, начиная с MySQL Server 5.6.4.
SMALLDATETIME DATETIME
DATETIMEOFFSET DATETIME
TIME TIME
TIMESTAMP TIMESTAMP
ROWVERSION TIMESTAMP
BINARY BINARY/MEDIUMBLOB/LONGBLOB В зависимости от его длины.
VARBINARY VARBINARY/MEDIUMBLOB/LONGBLOB В зависимости от его длины.
TEXT VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины.
NTEXT VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины.
IMAGE TINYBLOB/MEDIUMBLOB/LONGBLOB В зависимости от его длины.
SQL_VARIANT Миграция не поддерживается. Нет определенной поддержки этого типа данных.
TABLE Миграция не поддерживается. Нет определенной поддержки этого типа данных.
HIERARCHYID Миграция не поддерживается. Нет определенной поддержки этого типа данных.
UNIQUEIDENTIFIER VARCHAR(64) Уникальный флаг установлен в MySQL. Нет определенной поддержки вставки значений уникального идентификатора.
SYSNAME VARCHAR(160)
XML TEXT

10.6. Миграция PostgreSQL

10.6.1. Подготовка

Перед переходом вам будет нужно следующее:

10.6.2. Драйверы

10.6.2.1. Microsoft Windows

Загрузите и установите пакет MSI для psqlODBC. Выберите новейший файл на http://www.postgresql.org/ftp/odbc/versions/msi/, который будет внизу страницы загрузок. Это установит psqlODBC на вашей системе и позволит вам мигрировать от Postgresql на MySQL с помощью MySQL Workbench.

10.6.2.2. Linux

После установки iODBC, продолжите устанавливать драйверы PostgreSQL ODBC.

Загрузите исходные тексты psqlODBC с http://www.postgresql.org/ftp/odbc/versions/src/. Имя файла будет выглядеть подобно psqlodbc-09.03.0400.tar.gz. Распакуйте архив, откройте терминал и перейдите в нужный каталог. Процесс установки:

shell> cd the/src/directory
shell> ./configure --with-iodbc --enable-pthreads
shell> make
shell> sudo make install

Проверьте установку, подтвердив, что файл psqlodbcw.so в каталоге /usr/local/lib.

Затем необходимо зарегистрировать новый драйвер ODBC.

Откройте iODBC Data Source Administrator, выполнив iodbcadm-gtk в командной строке или запуском со страницы Overview в MySQL Workbench Migration Wizard, нажав кнопку Open ODBC Administrator.

Откройте вкладку ODBC Drivers в iODBC Data Source Administrator.

Рис. 10.44. iODBC Data Source Administrator

Content is described in the surrounding text.

Нажмите Add a driver и заполните форму следующими значениями:

Нажмите кнопку OK.

10.6.2.3. macOS

Чтобы собрать psqlODBC в macOS, нужен Xcode и его компонент "Command Line Tools", поскольку это включает необходимый компилятор gcc. Xcode свободен и доступен в AppStore. После установки XCode, откройте его и перейдите в to Preferences, Downloads, Components, затем установите компонент "Command Line Tools".

Загрузите исходные тексты psqlODBC с http://www.postgresql.org/ftp/odbc/versions/src/. Используйте последнюю версию доступную для скачивания. Распакуйте архив во временную папку, откройте терминал и перейдите в эту папку. Процесс установки:

shell> cd the/src/directory
shell> ./configure --with-iodbc --enable-pthreads
shell> CFLAGS="-arch i386 -arch x86_64" make
shell> sudo make install

10.6.3. Установка связи

После загрузки мастера Migration Wizard нажмите Start Migration на странице Overview, чтобы начать процесс миграции. Вы сначала соединитесь с исходной базой данных PostgreSQL. Здесь вы предоставите информацию о PostgreSQL RDBMS, драйвере ODBC, который будет использоваться для миграции, и все параметры, требуемые для связи. Имя драйвера ODBC это то, которое вы настраиваете, когда зарегистрировали драйвер psqlODBC в менеджере драйверов.

Откройте список Database System. Он покажет каждую RDBMS, которая поддерживается на вашей системе. Выберите PostgreSQL. Ниже этого списка есть дополнительный список Stored Connection. Сохраненные связи будут перечислены здесь, которые являются связями, сохраненными после определения связи с Store connection for future use as.

Три варианта Connection Method:

Драйвер psqlODBC не позволяет связь, не определяя имя базы данных.

Процесс миграции подобен другим базам данных. Посмотрите раздел 10.6.4 для получения информации о том, как мастер миграции мигрирует типы от PostgreSQL в MySQL и раздел 10.2.1 для общего руководства по миграции.

10.6.4. Отображение типов данных PostgreSQL

Следующая таблица показывает отображение между типами данных PostgreSQL (источник) и MySQL.

Таблица 10.3. Отображение типов

Исходный тип Тип MySQL Комментарий
INT INT
SMALLINT SMALLINT
BIGINT BIGINT
SERIAL INT Установит AUTO_INCREMENT в определении таблицы.
SMALLSERIAL SMALLINT Установит AUTO_INCREMENT в определении таблицы.
BIGSERIAL BIGINT Установит AUTO_INCREMENT в определении таблицы.
BIT BIT
BOOLEAN TINYINT(1)
REAL FLOAT
DOUBLE PRECISION DOUBLE
NUMERIC DECIMAL
DECIMAL DECIMAL
MONEY DECIMAL(19,2)
CHAR CHAR/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы CHAR с длиной до 255 знаков. Что-либо большее мигрируется как LONGTEXT.
NATIONAL CHARACTER CHAR/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR с длиной до 65535 знаков. Что-либо большее мигрируется к одному из типов TEXT. В MySQL набор символов строки зависит от набора символов столбца вместо типа данных.
VARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR знаков. Что-либо большее мигрируется к одному из типов TEXT.
NATIONAL CHARACTER VARYING VARCHAR/MEDIUMTEXT/LONGTEXT В зависимости от его длины. У MySQL Server 5.6 и выше могут быть столбцы VARCHAR знаков. Что-либо большее мигрируется к одному из типов TEXT. В MySQL набор символов строки зависит от набора символов столбца вместо типа данных.
DATE DATE
TIME TIME
TIMESTAMP DATETIME
INTERVAL TIME
BYTEA LONGBLOB
TEXT LONGTEXT
CIDR VARCHAR(43)
INET VARCHAR(43)
MACADDR VARCHAR(17)
UUID VARCHAR(36)
XML LONGTEXT
JSON LONGTEXT
TSVECTOR LONGTEXT
TSQUERY LONGTEXT
ARRAY LONGTEXT
POINT POINT
LINE LINESTRING Хотя длина LINE бесконечна, а LINESTRING конечен в MySQL, это приближено.
LSEG LINESTRING A LSEG похож на LINESTRING только с двумя точками.
BOX POLYGON A BOX это POLYGON с пятью точками и прямыми углами.
PATH LINESTRING
POLYGON POLYGON
CIRCLE POLYGON A POLYGON используется, чтобы представить CIRCLE.
TXID_SNAPSHOT VARCHAR

10.7. Миграция MySQL

Выполните модернизацию версии сервера MySQL, чтобы перейти на последнюю версию. Типичный мастер миграции может мигрировать MySQL к MySQL, и более простой мастер Schema Transfer Wizard может также использоваться.

MySQL Schema Transfer Wizard

Мастер MySQL Schema Transfer помогает вам переместить свои данные от более старой версии сервера MySQL в иную (как правило, более позднюю) версию MySQL. Этот инструмент миграции предназначается для разработчиков, поскольку это более просто, чем типичный мастер миграции, потому что это мигрирует только MySQL к MySQL. Данные передаются не на основе последовательного снимка, таким образом, они работают лучше всего на локальных серверах MySQL. Вы не должны использовать этого мастера на производственных серверах MySQL.

Чтобы открыть мастера, выберите Database, Schema Transfer Wizard из главного меню.

Рис. 10.45. MySQL Schema Transfer Wizard: Обзор

Content is described in the surrounding text.

Прочитайте текст обзора и нажмите Start the Wizard.

Рис. 10.46. MySQL Schema Transfer Wizard: выбор связи

Content is described in the surrounding text.

Выберите свои целевое и исходное подключения MySQL. После выбора и тестирования ваших подключений MySQL нажмите Next.

Рис. 10.47. MySQL Schema Transfer Wizard: выбор схемы

Content is described in the surrounding text.

Выберите схемы для миграции и нажмите Start Copy, чтобы начать копировать выбранные схемы с источника.

Рис. 10.48. MySQL Schema Transfer Wizard: копирование базы данных

Content is described in the surrounding text.

Просмотрите Message Log, чтобы подтвердить, что миграция, закончена с успехом. Нажмите Next , чтобы смотреть резюме результатов.

Рис. 10.49. MySQL Schema Transfer Wizard: Результаты

Content is described in the surrounding text.

Нажмите Finish, чтобы закрыть мастер.

10.8. Использование мастера MySQL Workbench Migration

Для визуальной пошаговой демонстрации мастера миграции посмотрите раздел 10.2.1.

10.8.1. Соединение с базами данных

Связь установлена с входными и выходными серверами баз данных.

Исходная связь

Выберите источник, который мигрирует к MySQL. Выберите Database System, которая мигрирует, и другие параметры связи изменятся соответственно.

Это определение связи может быть сохранено, используя Store connection for future use as, есть также опция Test Connection.

Рис. 10.50. MySQL Workbench: Выбор источника (параметры)

Content is described in the surrounding text.

Целевой выбор

Цель это база данных MySQL, которая будет содержать мигрировавшие данные. Выберите существующую связь MySQL Workbench или Manage Stored Connections из выпадающего списка, чтобы создать новое подключение MySQL.

Рис. 10.51. MySQL Workbench: Выбор цели

Content is described in the surrounding text.

10.8.2. Поиск схемы и выбор

Получите список доступных баз данных и выберите определенные базы данных (и таблицы), которые вы хотите мигрировать к MySQL.

Список схем

Список схем получается от входной и выходной RDBMS. Учетная запись, используемая для связи, должна иметь соответствующие привилегии для листинга и чтения схем, которые вы хотите мигрировать. Целевые настройки подключения RDBMS будут также проверены. Это автоматизированный информационный шаг, который сообщает, ошибки и общую информацию.

Шаги, которые выполняются, включают: соединение с источником, проверку связи и получение списка схем из источника.

Рис. 10.52. MySQL Workbench: получение списка схем

Content is described in the surrounding text.

Выбор схем

Выберите базы данных, которые вы хотите мигрировать к MySQL.

Шаг Schema Name Mapping Method предоставляет следующие возможности для перехода с Microsoft SQL Server:

Этот пример использует Microsoft SQL Server в качестве источника RDMS. Хотя варианты будут отличаться для других систем баз данных, логика остается той же самой.

Рис. 10.53. MySQL Workbench Migration: выбор схем

Content is described in the surrounding text.

10.8.3. Инженерный анализ

Исходные метаданные получены из источника RDBMS и перепроектированы. Это автоматизированный информационный шаг, который сообщает об ошибках и общей информации. Просмотрите записи и затем нажмите Next.

Рис. 10.54. MySQL Workbench: анализ источника

Content is described in the surrounding text.

10.8.4. Выбор объектов

Объекты, обнаруженные стадией Reverse Engineer Source, сделаны доступными здесь. Доступные объекты включают таблицы, представления и хранимые подпрограммы, но только объекты таблицы выбраны по умолчанию. Используйте Show Selection, чтобы отключить отдельные объекты таблицы.

Рис. 10.55. MySQL Workbench: Исходные объекты

Content is described in the surrounding text.

10.8.5. Миграция

Перепроектированные объекты из источника RDBMS автоматически преобразовываются в MySQL-совместимые объекты. Тип данных по умолчанию и отображения значения столбца по умолчанию используются, произведенные объекты и определения столбца могут быть просмотрены и отредактированы на следующем шаге.

Выполненные шаги включают перемещение выбранных объектов и создание запросов SQL CREATE.

Рис. 10.56. MySQL Workbench Migration: миграция

Content is described in the surrounding text.

10.8.6. Ручное редактирование

Используйте блок View, чтобы выбрать секцию, чтобы отредактировать. Кнопка Show Code and Messages доступна на каждой странице, и это показывает произведенный код MySQL, который соответствует выбранному объекту.

10.8.7. Целевые варианты создания

Определяет дополнительные параметры настройки для целевой схемы. Параметры конфигурации включают:

Рис. 10.60. MySQL Workbench Migration: целевые варианты создания

Content is described in the surrounding text.

10.8.8. Создание схемы

Скрипты SQL, произведенные для мигрировавших объектов схемы, будут теперь выполнены в целевой базе данных. Можно контролировать выполнение, если ошибки будут, то они будут исправлены на следующем шаге. Данные о таблице также будут мигрироваться в более позднем шаге.

Рис. 10.61. MySQL Workbench Migration: создание схем

Content is described in the surrounding text.

10.8.9. Создайте целевые результаты

Произведенные объекты перечисляются здесь, наряду с сообщениями об ошибках.

Код миграции также может быть рассмотрен и отредактирован здесь. Чтобы внести изменения, выберите объект, отредактируйте код запроса и нажмите Apply. Повторите этот процесс для каждого объекта, который будет отредактирован. Наконец, нажмите Recreate Objects, чтобы сохранить результаты.

Recreate Objects требуется, чтобы сохранить любые изменения здесь. Это выполнит предыдущий шаг миграции (Create Schemas) с измененным кодом, затем продолжит процесс миграции. Это также означает, что ранее сохраненная схема будет удалена.

Рис. 10.62. MySQL Workbench Migration: создайте целевые результаты

Content is described in the surrounding text.

10.8.10 Передача данных и установка миграции

Данные передаются из источника RDBMS к целевой базе данных MySQL. Экран установки включает следующие варианты:

Data Copy:

Допустимые здесь опции:

Рис. 10.63. MySQL Workbench Migration: Data Transfer Setup

Content is described in the surrounding text.

10.8.11. Оптовая передача данных

В зависимости от выбранного варианта это передаст данные целевой RDMS (по умолчанию), произведет простой скрипт для передачи данных онлайн или произведет скрипт, чтобы выполнить на исходном хосте, который производит zip-файл, содержащий скрипт передачи и данные, который будет выполнен на целевом хосте. Произвольно, смотрите журнал, чтобы подтвердить.

Рис. 10.64. MySQL Workbench Migration: оптовая передача данных

Content is described in the surrounding text.

10.8.12. Отчет о миграции

Показывает итоговый отчет, который суммирует процесс миграции. Следующие данные показывают пример отчета о миграции.

Рис. 10.65. MySQL Workbench Migration: Отчет о миграции

Content is described in the surrounding text.

10.9. MySQL Workbench Migration Wizard FAQ

Часто задаваемые вопросы с ответами.

10.9.1. Используя драйвер Postgresql psqlodbc, я получаю ошибку: ('08001', '[08001] Already connected. (202) (SQLDriverConnect)').

10.9.1.

Используя драйвер Postgresql psqlodbc, я получаю ошибку: ('08001', '[08001] Already connected. (202) (SQLDriverConnect)').

Это означает, что PostgreSQL не настроен, чтобы принять связи от IP источника.