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


Перенос базы данных MariaDB в Базу данных Azure для MariaDB с помощью дампа и восстановления

Важно!

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

В этой статье описываются два распространенных способа архивации и восстановления баз данных в Базе данных Azure для MariaDB:

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

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

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

Использование распространенных инструментов

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

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

Вы можете использовать такие служебные программы MySQL, как mysqldump и mysqlpump, для дампа и загрузки баз данных в Базу данных Azure для сервера MariaDB в нескольких распространенных сценариях.

  • Используйте дампы базы данных при перемещении всей базы данных. Мы рекомендуем использовать этот способ при перемещении большого количества данных MariaDB, или если вы не хотите прерывать работу службы для динамичных сайтов или приложений.

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

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

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    
  • Чтобы избежать проблем с совместимостью, при выполнении дампа баз данных в системах источника и назначения должна использоваться одна версия MariaDB. Например, если вы используете существующий сервер MariaDB версии 10.2, вы должны выполнить перемещение в Базу данных Azure для MariaDB, настроенную на запуск версии 10.2. Команда mysql_upgrade не будет работать в Базе данных Azure для сервера MariaDB и является неподдерживаемой. Если вам необходимо обновить все версии MariaDB, используйте сначала дамп или экспорт базы данных ранней версии, чтобы получить наиболее актуальную версию MariaDB в собственном окружении. Затем перед выполнением перемещения в Базу данных Azure для MariaDB запустите mysql_upgrade.

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

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

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

Создание резервного файла

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

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

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

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

Например, чтобы создать резервную копию базы данных с именем testdb на сервере MariaDB с именем пользователя testuser и без пароля и сохранить ее в файл testdb_backup.sql, используйте приведенную ниже команду. Команда создает резервную копию базы данных testdb в файле с именем testdb_backup.sql, который содержит все инструкции SQL, необходимые для повторного создания базы данных.

mysqldump -u root -p testdb > testdb_backup.sql

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

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

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

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

Создание базы данных на целевом сервере

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

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

Screenshot of the Overview pane for an Azure database for MariaDB server in the Azure portal.

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

Screenshot of the MySQL Connections pane in MySQL Workbench.

Восстановление базы данных MariaDB

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

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

В этом примере восстановите данные в созданную базу данных в целевой Базе данных Azure для сервера MariaDB.

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

Экспорт базы данных MariaDB с помощью phpMyAdmin

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

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

Импорт базы данных с помощью phpMyAdmin

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

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

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