Перенос больших баз данных в Базу данных Azure MySQL с помощью mydumper/myloader

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

База данных Azure для MySQL — это управляемая служба, которая позволяет запускать, администрировать и масштабировать в облаке базы данных MySQL с высоким уровнем доступности. Чтобы перенести базы данных MySQL размером более 1 ТБ в Базу данных Azure для MySQL, можно использовать инструменты сообщества, такие как mydumper и myloader, которые предоставляют следующие преимущества:

  • параллельное выполнение, позволяющее сократить время миграции;
  • повышение производительности за счет предотвращения ресурсоемких процедур преобразования кодировок;
  • формат вывода с отдельными файлами для таблиц, метаданных и т. д., что упрощает просмотр и анализ данных; согласованность за счет обеспечения моментального снимка во всех потоках;
  • точные позиции в журнале базы данных-источника и ее реплики;
  • простота управления за счет поддержки регулярных выражений, совместимых с Perl (PCRE), для указания включаемых и исключаемых баз данных и таблиц;
  • схема и данные перемещаются вместе; не нужно управлять ими отдельно, как при использовании других логические инструментов миграции.

В этом кратком руководстве показано, как установить базу данных MySQL, создать ее резервную копию, а затем восстановить ее с помощью mydumper и myloader.

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

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

  1. Создайте сервер Базы данных Azure для MySQL с помощью портала Azure.

  2. Создайте виртуальную машину Azure под управлением Linux (желательно Ubuntu) с помощью портала Azure.

    Примечание.

    Прежде чем устанавливать инструменты, учтите следующее.

    • Если ваш источник находится в локальной среде и использует подключение с высокой пропускной способностью к Azure (через ExpressRoute), рассмотрите возможность установки этого инструмента на виртуальной машине Azure.
    • Если пропускная способность между источником и целью ограничена, рассмотрите возможность установки mydumper рядом с источником, а myloader — рядом с целевым сервером. Вы можете использовать инструменты Azcopy для перемещения данных из локальных или других облачных решений в Azure.
  3. Установите клиент MySQL, выполнив следующие действия.

  • Обновите индекс пакетов на виртуальной машине Azure под управлением Linux, выполнив следующую команду:
sudo apt update
  • Установите пакет клиента MySQL, выполнив следующую команду:
sudo apt install mysql-client

Установка mydumper/myloader

Чтобы установить mydumper и myloader, выполните следующие действия.

  1. В зависимости от дистрибутива ОС, скачайте соответствующий пакет для mydumper/myloader, выполнив следующую команду:

    wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
    

    Примечание.

    $(lsb_release-CS) поможет найти свой дистрибутив.

  2. Чтобы установить DEB-файл пакета для mydumper, выполните следующую команду:

    sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
    

    Совет

    Команда, используемая для установки пакета, будет отличаться в зависимости от используемого дистрибутива Linux, так как их установщики отличаются. Mydumper/myloader доступен для следующих дистрибутивов Fedora, RedHat, Ubuntu, Debian, openSUSE и MacOSX. Дополнительные сведения см. в статье How to use mydumper (Как установить mydumper).

Создание резервной копии с помощью mydumper

  • Чтобы создать резервную копию с помощью mydumper, выполните следующую команду:

    mydumper --host=<servername> --user=<username> --password=<Password> --outputdir=./backup --rows=100000 --compress --build-empty-files --threads=16 --compress-protocol --trx-consistency-only --ssl  --regex '^(<Db_name>\.)' -L mydumper-logs.txt
    

В этой команде используются следующие переменные:

  • --host: узел для подключения;

  • --user: имя пользователя с необходимыми привилегиями;

  • --password: пароль пользователя;

  • --rows: таблицы будут разделены на фрагменты с указанным числом строк;

  • --outputdir: каталог для записи дампа выходных файлов;

  • --regex: регулярное выражение для сопоставления базы данных;

  • --trx-consistency-only: только согласованность транзакций;

  • --threads: число потоков; по умолчанию используются 4 потока. Рекомендуется использовать значение, равное удвоенному числу виртуальных ядер компьютера.

    Примечание.

    Дополнительные сведения о других параметрах mydumper можно получить, выполнив команду mydumper --help. Дополнительные сведения см. в документации по mydumper и myloader.
    Для параллельного дампа нескольких баз данных можно изменить переменную regex, как показано в примере: regex '^(DbName1.|DbName2.)

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

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

    myloader --host=<servername> --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=500 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
    

В этой команде используются следующие переменные:

  • --host: узел для подключения;
  • --user: имя пользователя с необходимыми привилегиями;
  • --password: пароль пользователя;
  • --directory: расположение, в котором хранится резервная копия;
  • --queries-per-transaction: рекомендуется задать значение не более 500;
  • --threads: число потоков; по умолчанию используются 4 потока. Рекомендуется использовать значение, равное удвоенному числу виртуальных ядер компьютера.

Совет

Для получения дополнительных сведений о других параметрах myloader выполните команду myloader --help.

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

Примечание.

Вы можете сообщить о проблемах или отправить отзывы об инструментах mydumper и myloader здесь.