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

Вы можете использовать Azure Database Migration Service для выполнения однократной полной миграции локального экземпляра базы данных MySQL в Базу данных Azure для MySQL с высокой скоростью переноса данных. В этом учебнике описано, как выполнить миграцию примера базы данных из локального экземпляра MySQL 5.7 в Базу данных Azure для MySQL (версии 5.7) с помощью автономной миграции в Azure Database Migration Service. Хотя в статьях предполагается, что источником является экземпляр базы данных MySQL, а целевым объектом — База данных Azure для MySQL, эти инструкции можно использовать для миграции из одной Базы данных Azure для MySQL в другую, просто изменив имя исходного сервера и учетные данные. Кроме того, поддерживается миграция с серверов MySQL более ранних версий (версия 5.6 и выше) в более поздние.

Важно!

Для интерактивной миграции также можно использовать средства с открытым кодом, например MyDumper/MyLoader с репликацией входных данных.

Важно!

Предварительные версии функций DMS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Примечание

Версию процесса миграции на основе скриптов PowerShell см. в статье Автономная миграция в Базу данных Azure для MySQL с поддержкой скриптов.

Примечание

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

В этом руководстве описано следующее:

  • Перенос схемы базы данных с помощью служебной программы mysqldump.
  • Создайте экземпляр Azure Database Migration Service.
  • создание проекта миграции с использованием Azure Database Migration Service.
  • выполнение миграции.
  • Мониторинг миграции.

Предварительные требования

Для работы с этим руководством вам потребуется следующее:

  • Подготовьте учетную запись Azure с активной подпиской. Создайте учетную запись бесплатно.

  • У вас должна быть локальная база данных MySQL с версией 5.7. Если ее нет, скачайте и установите MySQL Community Edition версии 5.7.

  • Миграция MySQL в автономном режиме поддерживается только в SKU DMS уровня "Премиум".

  • Создайте экземпляр в Базе данных Azure для MySQL. Ознакомьтесь со статьей Подключение и запрос данных с помощью MySQL Workbench, чтобы узнать, как подключить и создать базу данных с помощью приложения Workbench. Версия Базы данных Azure для MySQL должна быть не ниже, чем версия локальной базы данных MySQL. Например, MySQL версии 5.7 можно перенести в Базу данных Azure для MySQL версии 5.7 или 8.

  • Создайте виртуальную сеть Microsoft Azure для Azure Database Migration Service с помощью модели развертывания Azure Resource Manager, которая обеспечивает подключение "сеть — сеть" к локальным исходным серверам с помощью ExpressRoute или VPN. Дополнительные сведения о создании виртуальной сети приведены в документации по виртуальным сетям. В частности, уделите внимание кратким руководствам с пошаговыми инструкциями.

    Примечание

    Если вы используете ExpressRoute с пиринговым подключением к сети, управляемой Майкрософт, во время настройки виртуальной сети добавьте в подсеть, в которой будет подготовлена служба, следующие конечные точки:

    • целевую конечную точку базы данных (например, конечная точка SQL, конечная точка Cosmos DB и т. д.);
    • конечную точку службы хранилища;
    • конечную точку служебной шины.

    Такая конфигурация вызвана тем, что у Azure Database Migration Service нет подключения к Интернету.

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

  • Откройте брандмауэр Windows, чтобы разрешить подключения из виртуальной сети для Azure Database Migration Service для доступа к исходному серверу MySQL Server. По умолчанию это TCP-порт 3306.

  • Если перед исходными базами данных развернуто устройство брандмауэра, может понадобиться добавить правила брандмауэра, чтобы разрешить подключения из виртуальной сети для службы Azure Database Migration Service для доступа к исходным базам данных для выполнения миграции.

  • Создайте правило брандмауэра уровня сервера или настройте конечные точки службы виртуальной сети для целевой Базы данных Azure для MySQL, чтобы предоставить виртуальной сети службы Azure Database Migration Service доступ к целевым базам данных.

  • Исходный экземпляр MySQL должен находиться в поддерживаемой версии MySQL Community Edition. Чтобы определить версию экземпляра MySQL, в служебной программе MySQL или MySQL Workbench выполните следующую команду:

    SELECT @@version;
    
  • База данных Azure для MySQL поддерживает только таблицы InnoDB. Чтобы преобразовать таблицы MyISAM в InnoDB, ознакомьтесь со сведениями на странице о преобразовании таблиц.

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

Миграция схемы базы данных

Чтобы перенести все объекты базы данных, такие как схемы таблицы, индексы и хранимые процедуры, нам нужно извлечь схему из базы данных — источника и применить ее к целевой базе данных. Чтобы извлечь схему, можно использовать mysqldump с параметром --no-data. Для этого вам потребуется компьютер, который может подключаться как к исходной базе данных MySQL, так и к целевой Базе данных Azure для MySQL.

Чтобы экспортировать схему с помощью mysqldump, выполните следующую команду:

mysqldump -h [servername] -u [username] -p[password] --databases [db name] --no-data > [schema file path]

Пример:

mysqldump -h 10.10.123.123 -u root -p --databases migtestdb --no-data > d:\migtestdb.sql

Чтобы импортировать схему в целевую Базу данных Azure для MySQL, выполните следующую команду:

mysql.exe -h [servername] -u [username] -p[password] [database]< [schema file path]

Пример:

mysql.exe -h mysqlsstrgt.mysql.database.azure.com -u docadmin@mysqlsstrgt -p migtestdb < d:\migtestdb.sql

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

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

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

SELECT
    SchemaName,
    GROUP_CONCAT(DropQuery SEPARATOR ';\n') as DropQuery,
    Concat('DELIMITER $$ \n\n', GROUP_CONCAT(AddQuery SEPARATOR '$$\n'), '$$\n\nDELIMITER ;') as AddQuery
FROM
(
SELECT 
    TRIGGER_SCHEMA as SchemaName,
    Concat('DROP TRIGGER `', TRIGGER_NAME, "`") as DropQuery,
    Concat('CREATE TRIGGER `', TRIGGER_NAME, '` ', ACTION_TIMING, ' ', EVENT_MANIPULATION, 
            '\nON `', EVENT_OBJECT_TABLE, '`\n' , 'FOR EACH ', ACTION_ORIENTATION, ' ',
            ACTION_STATEMENT) as AddQuery
FROM  
    INFORMATION_SCHEMA.TRIGGERS
ORDER BY EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, ACTION_TIMING, EVENT_MANIPULATION, ACTION_ORDER ASC
) AS Queries
GROUP BY SchemaName

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

Регистрация поставщика ресурсов Microsoft.DataMigration

Регистрация поставщика ресурсов должна выполняться в каждой подписке Azure только один раз. Без регистрации вы не сможете создать экземпляр Azure Database Migration Service.

  1. Войдите на портал Azure, щелкните Все службы и выберите Подписки.

    Отображение подписок на портале

  2. Выберите подписку, в которой нужно создать экземпляр Azure Database Migration Service, а затем щелкните Поставщики ресурсов.

  3. В поле поиска введите migration, а затем справа от Microsoft.DataMigration щелкните Зарегистрировать.

    Регистрация поставщика ресурсов

Создание экземпляра Database Migration Service

  1. На портале Azure выберите +Создать ресурс, введите в поле поиска "Azure Database Migration Service", а затем в раскрывающемся списке выберите Azure Database Migration Service.

    Azure Marketplace

  2. На экране Azure Database Migration Service выберите Создать.

    Создание экземпляра Azure Database Migration Service

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

  4. Выберите ценовую категорию и перейдите на экран сетей. Возможность автономной миграции доступна только в ценовой категории "Премиум".

    Дополнительные сведения о ценовых категориях и затратах см. на странице с описанием цен.

    Настройка базовых параметров Azure Database Migration Service

  5. Выберите существующую виртуальную сеть из списка или укажите имя создаваемой виртуальной сети. Перейдите на экран "Проверка и создание". При необходимости можно добавить теги в службу с помощью экрана тегов.

    Виртуальная сеть предоставляет Azure Database Migration Service доступ к исходному экземпляру SQL Server и целевому экземпляру Базы данных SQL Azure.

    Настройка параметров сети Azure Database Migration Service

    См. статью Краткое руководство. Создание виртуальной сети с помощью портала Azure.

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

    Создание Azure Database Migration Service

Создание проекта миграции

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

  1. На портале Azure щелкните Все службы, выполните поиск по запросу "Azure Database Migration Service" и выберите Azure Database Migration Services (Службы Azure Database Migration Service).

    Поиск всех экземпляров Azure Database Migration Service

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

    Создание проекта миграции

  3. На экране Создать проект миграции укажите имя проекта, в поле выбора Тип исходного сервера выберите MySQL, в поле выбора Тип целевого сервера выберите База данных Azure для MySQL, а в поле выбора Тип действия миграции выберите Перенос данных [предварительная версия] . Нажмите кнопку Создать и запустить действие.

    Создание проекта Database Migration Service

    Примечание

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

Настройка проекта миграции

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

    Экран добавления сведений об источнике

  2. На экране Выбор целевого объекта укажите сведения о подключении для целевого экземпляра Базы данных Azure для MySQL и выберите Далее: выбрать базы данных>> .

    Экран добавления сведений о целевом объекте

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

    Если в целевой базе данных содержится база данных с тем же именем, что у исходной базы данных, Azure Database Migration Service по умолчанию выберет целевую базу данных. Экран выбора сведений о базе данных

    Примечание

    Хотя на этом шаге можно выбрать несколько баз данных, существуют ограничения на количество и скорость переноса баз данных, так как каждая база данных будет совместно использовать вычисления. В конфигурации по умолчанию SKU "Премиум" каждая задача миграции попытается выполнить миграцию двух таблиц параллельно. Эти таблицы могут быть из любой из выбранных баз данных. Если это недостаточно быстро, можно разделить действия по переносу баз данных на различные задачи миграции и масштабировать их по нескольким службам. Кроме того, в каждой подписке действует ограничение в 10 экземпляров Azure Database Migration Service на регион. Более детальный контроль над пропускной способностью и параллелизмом миграции описан в статье PowerShell: запуск автономной миграции из базы данных MySQL в Базу данных Azure для MySQL с помощью DMS

  4. На экране Настройка параметров миграции выберите таблицы, которые должны быть частью миграции, и нажмите кнопку Далее: сводка>> . Если целевые таблицы содержат данные, они не выбираются по умолчанию, но их можно явно выбрать, после чего они будут обрезаны перед началом миграции.

    Экран выбора таблиц

  5. На экране Сводка в поле Имя действия введите имя действия миграции, а затем проверьте соответствие сведениям о целевом и исходном сервере, которые вы указали ранее.

    Сводка по проекту миграции

  6. Выберите Начать миграцию. Появится окно действия миграции и в поле Состояние будет указано Инициализация. Состояние изменится на Выполняется, когда начнется перенос таблиц.

    Выполнение миграции

Мониторинг миграции

  1. На экране действия миграции выберите Обновить, чтобы обновить отображение и просмотреть ход выполнения по количеству перенесенных таблиц.

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

    Мониторинг миграции

Выполнение миграции

  1. На экране действия миграции нажмите кнопку Обновить, чтобы обновить содержимое экрана, пока состояние миграции не поменяется на Завершено.

    Завершение миграции

Действия после миграции

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

  1. Создайте имена входа, роли и разрешения в соответствии с требованиями приложения.
  2. Повторно создайте все триггеры в целевой базе данных, извлеченные перед миграцией.
  3. Проверьте работоспособность приложения для целевой базы данных, чтобы подтвердить успешную миграцию.

Очистка ресурсов

Если вы не собираетесь дальше использовать Database Migration Service, можно удалить службу, выполнив следующие действия:

  1. На портале Azure щелкните Все службы, выполните поиск по запросу "Azure Database Migration Service" и выберите Azure Database Migration Services (Службы Azure Database Migration Service).

    Нахождение всех экземпляров DMS

  2. Выберите экземпляр службы миграции в результатах поиска и щелкните Удалить службу.

    Удаление службы миграции

  3. В диалоговом окне подтверждения введите имя службы в текстовое поле ВВЕДИТЕ ИМЯ СЛУЖБЫ МИГРАЦИИ БАЗ ДАННЫХ и выберите Удалить.

    Подтверждение удаления службы миграции

Дальнейшие действия