Поделиться через


Миграция из локальной службы MySQL в БД Azure для MySQL: перенос данных с помощью MySQL Workbench

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

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

Перенос локальной среды MySQL в База данных Azure для MySQL: миграция данных

Настройка

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

Настройка параметров сервера (источник)

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

Настройка параметров сервера (целевой объект)

Перед началом процесса импорта в БД Azure для MySQL проверьте параметры сервера. Параметры сервера можно получить и задать на портале Azure или путем вызова командлетов Azure PowerShell для MySQL.

Выполните следующий скрипт PowerShell, чтобы получить все параметры:

\[Net.ServicePointManager\]::SecurityProtocol = \[Net.SecurityProtocolType\]::Tls
12

Install-Module -Name Az.MySql
Connect-AzAccount
$rgName = "{RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";
Get-AzMySqlConfiguration -ResourceGroupName $rgName -ServerName $serverName
mysql --host {servername}.mysql.database.azure.com --database mysql --user
{u sername}@{servername} -p --ssl-ca=c:\\temp\\BaltimoreCyberTrustRoot.crt.cer
-A -e "SHOW GLOBAL VARIABLES;" \> c:\\temp\\settings\_azure.txt

Будет создан файл settings_azure.txt, где можно изучить стандартные параметры сервера БД Azure для MySQL, которые представлены в приложении.

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

  • max\_allowed\_packet — установите значение 1073741824 (то есть 1 ГБ) или значение размера самой крупной строки в базе данных, чтобы избежать переполнения буфера при обработке длинных строк. Возможно, этот параметр придется изменять при наличии строк с большими двоичными объектами, которые нужно извлекать или считывать.

  • innodb\_buffer\_pool\_size — в разделе "Ценовая категория" на портале увеличьте категорию сервера до 32 виртуальных ядер с оптимизацией для операций в памяти на время миграции, чтобы увеличить значение innodb_buffer_pool_size. Innodb_buffer_pool_size можно увеличить только путем увеличения масштаба вычислений для сервера базы данных Azure для MySQL. Максимально допустимые значения для разных уровней указаны на странице параметров сервера в Базе данных Azure для MySQL. В системе с 32 виртуальными ядрами и оптимизацией для операций в памяти допускаются значения до 132070244352.

  • innodb\_io\_capacity & innodb\_io\_capacity\_max — измените параметр, чтобы 9000 улучшить использование операций ввода-вывода для оптимизации скорости миграции.

  • max\_connections — если используется средство, создающее несколько потоков для увеличения пропускной способности, увеличьте количество соединений для поддержки этого средства. Значение по умолчанию — 151, максимально допустимое — 5000.

    Примечание.

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

Эти параметры можно обновить с помощью следующих командлетов Azure PowerShell:

Install-Module -Name Az.MySql
$rgName = " {RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";

Select-AzSubscription -Subscription "{SUBSCRIPTION\_ID}"
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 1073741824
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName
$rgna me -ServerName $serverName -Value 9000
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 9000

\#required if You've functions

Update-AzMySqlConfiguration -Name log\_bin\_trust\_function\_creators
-ResourceGr oupName $rgname -ServerName $serverName -Value ON

Data

Выбор средства

После переноса объектов базы данных и пользователей из исходной системы можно начинать миграцию. Базы данных, работающие в службе MySQL версии 8.0, не могут использовать Azure DMS для миграции рабочей нагрузки. Вместо этого для миграции следует использовать MySQL Workbench.

Действия по импорту и экспорту вручную

  • Откройте MySQL Workbench и подключитесь к корневому пользователю локальной базы данных.

  • В разделе **Управление** выберите **Экспорт данных**. Выберите схему reg_app.

  • В области Объекты для экспорта выберите Дамп хранимых процедур и функций, Дамп событий и Дамп триггеров.

  • В разделе Параметры экспорта выберите Экспорт в автономный файл.

  • Также установите флажок Включить создание схемы. На приведенном ниже изображении представлена правильная конфигурация mysqldump.

    Снимок экрана: создание схемы.

    Тестирование

  • Если какие-то из этих параметров отсутствуют, их отображению обычно мешает область вывода. Измените макет редактора соответствующим образом.

    Снимок экрана: макет редактора.

    Тестирование

  • Выберите вкладку Ход экспорта.

  • Щелкните Start Export (Начать экспорт) и убедитесь, что MySQL Workbench выполняет вызовы к средству mysqldump.

  • Откройте только что созданный скрипт экспорта.

  • Найдите все инструкции DEFINER и укажите в них допустимого пользователя или удалите их полностью.

Примечание.

Это можно сделать, передав --skip-definer в команду mysqldump. В MySQL Workbench такой вариант невозможен, и эти строки придется удалять вручную в командах экспорта. Здесь мы выделили четыре элемента для удаления, но у вас могут появиться и другие элементы, наличие которых может привести к ошибке при миграции на другую версию MySQL (например, новые зарезервированные слова).

  • Найдите инструкции SET GLOBAL и укажите в них допустимого пользователя или удалите их полностью.

  • Убедитесь, что sql\_mode не задано значение NO\_AUTO\_CREATE\_USER.

  • Удалите функцию hello\_world.

  • В MySQL Workbench создайте новое подключение к БД Azure для MySQL.

    • В качестве имени узла введите полное DNS-имя сервера (например, servername.mysql.database.azure.com).

    • Введите имя пользователя (например, sqlroot@servername).

    • Перейдите на вкладку SSL.

    • Чтобы открыть SSL-файл центра сертификации, в окне обзора найдите файл ключа BaltimoreCyberTrustRoot.crt.cer.

    • Щелкните Проверить подключение и убедитесь, что подключение успешно завершается.

    • Нажмите ОК.

      Снимок экрана: диалоговое окно подключения MySQL.

      Откроется диалоговое окно подключения к MySQL.

  • Щелкните Файл >Открыть скрипт SQL.

  • Перейдите к файлу дампа и выберите Открыть.

  • Выберите Выполнить.

Обновление приложений для поддержки SSL

  • Переключитесь на API Java Server в Visual Studio Code.

  • Откройте файл launch.json.

  • В поле DB_CONNECTION_URL (URL-адрес подключения к базе данных) укажите jdbc:mysql://serverDNSname:3306/reg\_app?useUnicode=true\&useJDBCCompliantT imezoneShift=true\&useLegacyDatetimeCode=false\&serverTimezone=UTC\&verifySe rverCertificate=true\&useSSL=true\&requireSSL=true\&noAccessToProcedureBodie s=true.. Обратите внимание на дополнительные параметры SSL.

  • Обновите значение DB_USER_NAME (Имя пользователя базы данных) на conferenceuser@servername.

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

Восстановление параметров сервера

Указанные ниже параметры можно изменить на целевом экземпляре БД Azure для MySQL. Эти параметры можно настроить на портале Azure или с помощью командлетов Azure PowerShell для MySQL.

$rgName = "YourRGName";
$serverName = "servername";
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 536870912
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName $rgna
me -ServerName $serverName -Value 200
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 2000

Изменение строки подключения для API Java

  • Используйте следующие команды, чтобы изменить строку подключения для API Java Службы приложений.
$rgName = "YourRGName";
$app_name = "servername";
az webapp config appsettings set -g $rgName -n $app_name
--settings DB_CONNECTION_URL={DB_CONNECTION_URL}

Примечание.

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

  • Перезапустите API Службы приложений.
az webapp restart -g $rgName -n $app\_name

Итак, вы успешно завершили миграцию из локальной службы в Базу данных Azure для MySQL!

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