Перенос базы данных MySQL в База данных Azure для MySQL — гибкий сервер с помощью дампа и восстановления

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

Важно!

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

В этой статье объясняется два распространенных способа резервного копирования и восстановления баз данных на База данных Azure для MySQL гибком сервере.

  • Дамп и восстановление из командной строки (с помощью mysqldump).
  • Дамп и восстановление с помощью PHPMy Администратор.

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

Подготовка к работе

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

Совет

Если вы хотите перенести большие базы данных размером более 1 ТБ, попробуйте использовать такие средства сообщества, как mydumper/myloader, которые поддерживают параллельный экспорт и импорт. Узнайте, как перенести большие базы данных MySQL.

Распространенные варианты использования дампа и восстановления

Типичные варианты использования:

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

  • Миграция из локальной среды или виртуальной машины — База данных Azure для MySQL гибкий сервер не поддерживает восстановление физических резервных копий, что делает логическое резервное копирование и восстановление в качестве подхода ONLY.

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

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

    Например, если у вас есть WordPress или WebApp с помощью таблиц MyISAM, сначала преобразуйте эти таблицы, переключив их в формат InnoDB перед восстановлением до База данных Azure для MySQL гибкого сервера. Используйте предложение ENGINE=InnoDB, чтобы задать ядро, используемое при создании таблицы, а затем передайте данные в совместимую таблицу перед восстановлением.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Важно!

  • Чтобы избежать проблем с совместимостью, должна использоваться одна версия MySQL в системах источника и назначения при дампе баз данных. Например, если существующий сервер MySQL версии 5.7, необходимо перейти на База данных Azure для MySQL гибкий экземпляр сервера, настроенный для запуска версии 5.7. Команда mysql_upgrade не работает в База данных Azure для MySQL гибком экземпляре сервера и не поддерживается.
  • Если вам необходимо обновить все версии MySQL, используйте сначала дамп или экспорт базы данных ранней версии, чтобы получить наиболее актуальную версию MySQL в собственной среде. Затем выполните команду mysql_upgrade перед попыткой миграции в База данных Azure для MySQL гибкий экземпляр сервера.

Замечания, связанные с быстродействием

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

  • Используйте параметр exclude-triggers в mysqldump при выполнении дампа баз данных. Исключите триггеры из файлов дампа, чтобы избежать сбоев запуска команд триггера во время восстановления данных.
  • Используйте параметр single-transaction, чтобы задать режим изоляции транзакций REPEATABLE READ и отправлять на сервер инструкцию SQL START TRANSACTION перед созданием дампа данных. Формирование дампа нескольких таблиц в одной транзакции приведет к использованию дополнительных ресурсов хранилища во время восстановления. Параметры single-transaction и lock-tables являются взаимоисключающими, так как LOCK TABLES приводит к неявной фиксации всех ожидающих транзакций. Для формирования дампа больших таблиц используйте параметр single-transaction с параметром quick.
  • Используйте многострочный синтаксис extended-insert с несколькими списками VALUE. Это позволяет уменьшить размер файла дампа и ускорить операции вставки при перезагрузке файла.
  • Используйте параметр order-by-primary в mysqldump при выполнении дампа баз данных, чтобы данные были добавлены в сценарий в порядке первичных ключей.
  • Используйте параметр disable-keys в mysqldump при выполнении дампа данных, чтобы отключить ограничения для внешнего ключа перед загрузкой. Отключение проверок внешнего ключа обеспечивает значительный прирост производительности. Включите ограничения и проверьте данные после загрузки, чтобы обеспечить целостность данных.
  • Используйте секционированные таблицы, когда это необходимо.
  • Загружайте данные в параллельном режиме. Не выполняйте слишком много параллельных операций, так как можно достигнуть лимита ресурсов. Отслеживайте ресурсы с помощью метрик, доступных на портале Azure.
  • Используйте параметр defer-table-indexes в mysqldump при выполнении дампа баз данных для создания индекса после загрузки данных таблиц.
  • Скопируйте файлы резервной копии в большой двоичный объект Azure или хранилище Azure и выполните восстановление из них, что должно быть намного быстрее, чем восстановление через Интернет.

Создание базы данных на целевом База данных Azure для MySQL гибком экземпляре сервера

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

Чтобы подключиться, найдите сведения о подключении в обзоре База данных Azure для MySQL гибкого экземпляра сервера.

Find the connection information in the Azure portal

Добавьте сведения о подключении в MySQL Workbench.

MySQL Workbench Connection String

Подготовка целевого экземпляра База данных Azure для MySQL гибкого сервера для быстрой загрузки данных

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

  • max_allowed_packet — задайте значение 1073741824 (т. е. 1 ГБ), чтобы предотвратить проблемы с переполнением из-за длинных строк.
  • slow_query_log — установите значение OFF, чтобы отключить журнал запросов с задержкой. Это устраняет издержки, вызванные медленным ведением журнала запросов во время загрузки данных.
  • query_store_capture_mode — задайте значение NONE, чтобы отключить хранилище запросов. Это устраняет издержки, вызванные действиями выборки хранилище запросов.
  • innodb_buffer_pool_size — увеличьте масштаб сервера до 32 виртуальных ядер, оптимизированных для памяти, в разделе ценовой категории на портале во время миграции, чтобы увеличить innodb_buffer_pool_size. Innodb_buffer_pool_size можно увеличить только путем масштабирования вычислений для База данных Azure для MySQL гибкого экземпляра сервера.
  • innodb_io_capacity и innodb_io_capacity_max — измените значение на 9000 в параметрах сервера на портале Azure, чтобы улучшить использование операций ввода-вывода для оптимизации скорости миграции.
  • innodb_write_io_threads и innodb_write_io_threads — измените значение на 4 в параметрах сервера на портале Azure, чтобы повысить скорость миграции.
  • Увеличение масштаба служба хранилища уровня— количество операций ввода-вывода в секунду для База данных Azure для MySQL гибкого сервера постепенно увеличивается с увеличением уровня хранилища. Для ускорения загрузки может потребоваться увеличить уровень хранилища, чтобы увеличить число подготовленных операций ввода-вывода в секунду. Помните, что масштаб хранилища можно только увеличивать, а не уменьшать.

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

Создание дампа и восстановление с помощью служебной программы mysqldump

Создание файла резервной копии из командной строки с помощью mysqldump

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

mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

Необходимо указать следующие параметры:

  • [uname] — имя пользователя базы данных;
  • [pass] — пароль для базы данных (обратите внимание, что между "-p" и паролем нет пробела);
  • [dbname] — имя базы данных;
  • [backupfile.sql] — имя файла резервной копии базы данных;
  • [--opt] — параметр mysqldump.

Например, чтобы создать резервную копию базы данных с именем testdb на сервере MySQL с именем пользователя testuser и без пароля и сохранить ее в файл testdb_backup.sql, используйте приведенную ниже команду. Команда создает резервную копию базы данных testdb в файле с именем testdb_backup.sql, который содержит все инструкции SQL, необходимые для повторного создания базы данных. Убедитесь, что имя пользователя testuser имеет по меньшей мере разрешения на инструкцию SELECT для таблиц в дампе, SHOW VIEW для представлений в дампе, TRIGGER для триггеров в дампе и LOCK TABLES, если не используется параметр --single-transaction.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Теперь запустите mysqldump, чтобы создать резервную копию базы данных testdb.

mysqldump -u root -p testdb > testdb_backup.sql

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

mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

Чтобы создать резервную копию сразу нескольких баз данных, используйте параметр --database и укажите имена этих баз данных в виде списка, разделенного пробелами.

mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Восстановление базы данных MySQL с помощью командной строки

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

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

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

Ниже приведен пример использования команды mysql для отдельного сервера.

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

Ниже приведен пример использования команды mysql для гибкого сервера.

mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

дамп и восстановление с помощью PHPMyAdmin.

Выполните указанные ниже действия, чтобы создать дамп базы данных и восстановить ее, используя PHPMyadmin.

Примечание.

Для отдельного сервера имя пользователя должно иметь формат username@servername, а для гибкого сервера можно просто использовать формат username. Если использовать username@servername для гибкого сервера, то произойдет сбой подключения.

Экспорт с помощью PHPMyadmin

Для экспорта можно использовать распространенный инструмент phpMyAdmin, который уже может быть установлен в вашей локальной среде. Чтобы экспортировать базу данных MySQL с помощью PHPMyAdmin, выполните следующие действия:

  1. Откройте phpMyAdmin.
  2. Выберите свою базу данных. Выберите в списке слева имя базы данных.
  3. Щелкните ссылку Экспорт. Появится страница для просмотра дампа базы данных.
  4. В области экспорта выберите ссылку "Выбрать все ", чтобы выбрать таблицы в базе данных.
  5. В области параметров SQL выберите необходимые параметры.
  6. Выберите параметр Сохранить как файл, щелкните соответствующий вариант сжатия, а затем нажмите кнопку Перейти. Появится диалоговое окно, предлагающее сохранить файл локально.

Импорт с помощью PHPMyAdmin

Импорт базы данных выполняется подобно экспорту. Выполните следующие действия:

  1. Откройте phpMyAdmin.
  2. На странице установки phpMy Администратор выберите "Добавить", чтобы добавить экземпляр гибкого сервера База данных Azure для MySQL. Укажите сведения о подключении и учетные данные.
  3. Создайте базу данных, присвоив ей соответствующее имя. Затем выберите эту базу данных, щелкнув ее имя в списке в левой части экрана. Чтобы перезаписать существующую базу данных, щелкните имя базы данных, установите все флажки рядом с именами таблиц, а затем выберите Удалить, чтобы удалить существующие таблицы.
  4. Щелкните ссылку SQL, чтобы отобразилась страница, на которой можно ввести команды SQL или передать файл SQL.
  5. Нажмите кнопку обзора, чтобы найти файл базы данных.
  6. Нажмите кнопку Перейти, чтобы экспортировать резервную копию, выполнить команды SQL и повторно создать базу данных.

Известные проблемы

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

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