Перенос Amazon RDS для MySQL в Базу данных Azure MySQL с помощью MySQL Workbench

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер

Важно!

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

Чтобы перенести Amazon RDS для MySQL в Базу данных Azure MySQL, можно использовать различные служебные программы, такие как функции экспорта и импорта MySQL Workbench, Azure Database Migration Service (DMS) и средство дампа и восстановления MySQL. Однако самый простой и удобный способ переноса баз данных Amazon RDS для MySQL в Базу данных Azure MySQL — это мастер миграции MySQL Workbench.

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

Примечание.

Мастер миграции также можно использовать для переноса данных из других источников, например Microsoft SQL Server, Oracle, PostgreSQL, MariaDB и т. д., что выходит за рамки этой статьи.

Необходимые компоненты

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

  • Убедитесь, что кодировка исходной и целевой баз данных совпадает.

  • Задайте достаточное время ожидания в зависимости от объема данных или рабочей нагрузки, которую необходимо импортировать или перенести.

  • Задайте для параметра max_allowed_packet parameter разумное значение в зависимости от размера базы данных, которую необходимо импортировать или перенести.

  • Убедитесь, что во всех таблицах используется InnoDB, так как сервер Базы данных Azure MySQL поддерживает только подсистему хранилища InnoDB.

  • Удалите, замените или отредактируйте все триггеры, хранимые процедуры и другие функции, содержащие определения корневых пользователей или суперпользователей (База данных Azure MySQL не поддерживает привилегии суперпользователя). Вы можете заменить такие предложения DEFINER именем администратора, выполняющего процесс импорта, с помощью следующей команды:

    DELIMITER; ;/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`127.0.0.1`*/ /*!50003
    DELIMITER;
    /* Modified to */
    DELIMITER;
    /*!50003 CREATE*//*!50017 DEFINER=`AdminUserName`@`ServerName`*/ /*!50003
    DELIMITER;
    
    
  • Если на сервере базы данных выполняются определяемые пользователем функции (UDF), необходимо удалить права доступа к базе данных MySQL. Чтобы выяснить, какие пользовательские функции выполняются на сервере, используйте следующий запрос:

    SELECT * FROM mysql.func;
    

    Если вы обнаружите выполняемые UDF, удалите их с помощью следующего запроса:

    DROP FUNCTION your_UDFunction;
    
  • Убедитесь, что на сервере, на котором работает средство, и в месте экспорта достаточно места на диске и вычислительной мощности (виртуальных ядер, ЦП и памяти) для выполнения операции экспорта, особенно при экспорте очень большой базы данных.

  • Создайте путь между локальным или AWS экземпляром и Базой данных Azure MySQL, если рабочая нагрузка находится за брандмауэрами или другими системами защиты сети.

Запуск миграции

  1. Чтобы запустить миграцию, войдите в MySQL Workbench и щелкните значок "Главная".

  2. На панели навигации слева выберите значок мастера миграции, как показано на снимке экрана ниже.

    MySQL Workbench start screen

    Отобразится страница Обзор мастера миграции, как показано ниже.

    MySQL Workbench Migration Wizard welcome page

  3. Определите, установлен ли драйвер ODBC для сервера MySQL, выбрав элемент Открыть администратор ODBC.

    В нашем случае на вкладке Драйверы можно заметить, что установлены два драйвера ODBC для сервера MySQL.

    ODBC Data Source Administrator page

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

  4. Закройте диалоговое окно Администратор источников данных ODBC и продолжайте процесс миграции.

Настройка параметров подключения сервера исходной базы данных

  1. На странице Обзор выберите Запустить миграцию.

    Появится страница Выбор источника. На этой странице укажите сведения о реляционной СУБД, из которой выполняется миграция, и параметры соединения.

  2. В поле Система базы данных выберите MySQL.

  3. В поле Сохраненное соединение выберите один из сохраненных параметров подключения для этой реляционной СУБД.

    Подключение можно сохранить, установив флажок в нижней части страницы и указав имя.

  4. В поле Метод подключения выберите Стандартный TCP/IP.

  5. В поле Имя узла укажите имя сервера базы данных источника.

  6. В поле Порт укажите 3306, а затем введите имя пользователя и пароль для подключения к серверу.

  7. В поле База данных укажите имя базы данных, которую необходимо перенести, если оно известно; в противном случае оставьте этот параметр пустым.

  8. Выберите Проверить подключение, чтобы проверить подключение к экземпляру сервера MySQL.

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

    Source database connection parameters page

  9. Выберите Далее.

Настройка параметров подключения сервера целевой базы данных

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

  2. Чтобы проверить подключение, нажмите Проверить подключение.

    Target database connection parameters page

  3. Выберите Далее.

Выбор схемы для переноса

Мастер миграции установит соединение с экземпляром сервера MySQL и получит список схем с исходного сервера.

  1. Выберите Показать журналы, чтобы отследить эту операцию.

    На снимке экрана ниже показано, как извлекаются схемы с исходного сервера базы данных.

    Fetch schemas list page

  2. Нажмите кнопку Далее, чтобы убедиться, что все схемы были успешно получены.

    На снимке экрана ниже показан список выбранных схем.

    Schemas selection page

    Вы можете перенести только те схемы, которые отображаются в этом списке.

  3. Выберите схемы для переноса и нажмите кнопку Далее.

Миграция объектов

Затем укажите объекты, которые требуется перенести.

  1. Выберите Показать выделенное, а затем в разделе Доступные объекты выберите и добавьте объекты, которые требуется перенести.

    После добавления объектов они появятся в разделе Объекты для миграции, как показано на снимке экрана ниже.

    Source objects selection page

    В этом сценарии мы выбрали все объекты таблицы.

  2. Выберите Далее.

Изменение данных

В этом разделе вы можете изменить объекты, которые требуется перенести.

  1. На странице Редактирование вручную обратите внимание на раскрывающееся меню Вид в правом верхнем углу.

    Manual Editing selection page

    Раскрывающийся список Вид содержит три элемента:

    • Все объекты — отображает все объекты. С помощью этого параметра можно вручную изменить созданный скрипт SQL перед его применением к целевому серверу базы данных. Для этого выберите объект и щелкните "Показать код и сообщения". Вы можете увидеть (и отредактировать) созданный код MySQL для выбранного объекта.
    • Проблемы с миграцией — отображает все проблемы, возникшие во время миграции, которые можно просмотреть и проверить.
    • Сопоставление столбцов — отображает сведения о сопоставлении столбцов. Это представление можно использовать для редактирования имен и изменения столбцов целевых объектов.
  2. Выберите Далее.

Создание целевой базы данных

  1. Установите флажок Создать схему в целевой реляционной СУБД.

    Также можно сохранить существующие схемы, чтобы не менять и не обновлять их.

    Target Creation Options page

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

  2. Выберите Далее.

Запуск скрипта MySQL для создания объектов базы данных

Так как мы решили создать схему в целевой СУБД, скрипт SQL для переноса будет выполнен на целевом сервере MySQL. Вы можете просмотреть ход его выполнения, как показано на снимке экрана ниже.

Create Schemas page

  1. После создания схем и их объектов нажмите кнопку Далее.

    На странице Создание целевых результатов отображается список объектов, которые были созданы, и уведомления об ошибках, обнаруженных при их создании, как показано на снимке экрана ниже.

    Create Target Results page

  2. Проверьте сведения на этой странице, чтобы убедиться, что все выполнено правильно.

    В рассматриваемом в этой статье примере ошибок нет. Если устранять ошибки по сообщениям нет необходимости, можно отредактировать скрипт миграции.

  3. В поле Объект выберите объект, который нужно изменить.

  4. В разделе Скрипт SQL CREATE для выбранного объекта отредактируйте скрипт SQL, а затем нажмите кнопку Применить, чтобы сохранить изменения.

  5. Выберите Повторно создать объекты, чтобы запустить скрипт с изменениями.

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

  6. Выберите Далее.

Передача данных

На этом этапе процесса данные перемещаются из экземпляра базы данных исходного MySQL Server в созданный целевой экземпляр базы данных MySQL. Для настройки этого процесса используйте страницу Настройка передачи данных.

Data Transfer Setup page

На этой странице представлены параметры для настройки передачи данных. В рамках этой статьи мы используем значения по умолчанию.

  1. Чтобы начать фактический перенос данных, нажмите кнопку Далее.

    Ход перемещения отображается, как показано на снимке экрана ниже.

    Bulk Data Transfer page

    Примечание.

    Длительность переноса данных напрямую зависит от размера переносимой базы. Чем больше база данных-источник, тем дольше будет выполняться процесс (для больших баз данных он может занять до нескольких часов).

  2. После завершения переноса нажмите кнопку Далее.

    Откроется страница Отчет о миграции с отчетом, содержащим сводку всего процесса, как показано на следующем снимке экрана:

    Migration Progress Report page

  3. Нажмите кнопку Готово, чтобы закрыть окно мастера миграции.

    После этого миграция считается успешно завершенной.

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

  1. Затем войдите в экземпляр целевой базы данных MySQL, чтобы убедиться, что перенесенные схемы и таблицы соответствуют исходной базе данных MySQL.

    В нашем случае можно увидеть, что все схемы (sakila, moda, items, customer, clothes, world и world_x) из базы данных Amazon RDS для MySQL MyjolieDB успешно перенесены в экземпляр базы данных Azure MySQL azmysql.

  2. Чтобы проверить количество таблиц и строк, выполните следующий запрос для обоих экземпляров:

    SELECT COUNT (*) FROM sakila.actor;

    На снимке экрана ниже можно увидеть, что число строк для Amazon RDS MySQL — 200, и это соответствует экземпляру Базы данных Azure MySQL.

    Table and Row size source database

    Table and Row size target database

    Хотя приведенный выше запрос можно выполнить для каждой отдельной схемы и таблицы, это может потребовать значительных усилий, если вы работаете с сотнями тысяч или даже миллионами таблиц. Для сверки размеров схемы (базы данных) и таблиц можно использовать приведенные ниже запросы.

  3. Чтобы проверить размер базы данных, выполните следующий запрос:

    SELECT table_schema AS "Database", 
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
    FROM information_schema.TABLES 
    GROUP BY table_schema;
    
  4. Чтобы проверить размер таблиц, выполните следующий запрос:

    SELECT table_name AS "Table",
    ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
    FROM information_schema.TABLES
    WHERE table_schema = "database_name"
    ORDER BY (data_length + index_length) DESC;
    

    На снимках экрана ниже показан размер схемы (базы данных) из исходного экземпляра Amazon RDS MySQL, который совпадает с параметрами целевого экземпляра Базы данных Azure MySQL.

    Database size source database

    Database size target database

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

    Теперь вы убедились, что миграция выполнена успешно.

Следующие шаги

  • Дополнительные сведения о переносе баз данных в службу "База данных Azure для MySQL" см. в этой статье.
  • Просмотрите видео Easily migrate MySQL/PostgreSQL apps to Azure managed service (Простой перенос приложений MySQL и PostgreSQL в управляемую службу Azure), в котором демонстрируется миграция приложений MySQL в Базу данных Azure для MySQL.