Перенос больших баз данных в Базу данных Azure MySQL с помощью mydumper/myloader
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который является состоянием "Конец жизни" (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
База данных Azure для MySQL — гибкий сервер
База данных Azure для MySQL — это управляемая служба, которая позволяет запускать, администрировать и масштабировать в облаке базы данных MySQL с высоким уровнем доступности. Чтобы перенести базы данных MySQL размером более 1 ТБ в Базу данных Azure для MySQL, можно использовать инструменты сообщества, такие как mydumper и myloader, которые предоставляют следующие преимущества:
- параллельное выполнение, позволяющее сократить время миграции;
- повышение производительности за счет предотвращения ресурсоемких процедур преобразования кодировок;
- формат вывода с отдельными файлами для таблиц, метаданных и т. д., что упрощает просмотр и анализ данных; согласованность за счет обеспечения моментального снимка во всех потоках;
- точные позиции в журнале базы данных-источника и ее реплики;
- простота управления за счет поддержки регулярных выражений, совместимых с Perl (PCRE), для указания включаемых и исключаемых баз данных и таблиц;
- схема и данные перемещаются вместе; не нужно управлять ими отдельно, как при использовании других логические инструментов миграции.
В этом кратком руководстве показано, как установить базу данных MySQL, создать ее резервную копию, а затем восстановить ее с помощью mydumper и myloader.
Необходимые компоненты
Прежде чем приступить к переносу базы данных MySQL, сделайте следующее:
Создайте сервер Базы данных Azure для MySQL с помощью портала Azure.
Создайте виртуальную машину Azure под управлением Linux (желательно Ubuntu) с помощью портала Azure.
Примечание.
Прежде чем устанавливать инструменты, учтите следующее.
- Если ваш источник находится в локальной среде и использует подключение с высокой пропускной способностью к Azure (через ExpressRoute), рассмотрите возможность установки этого инструмента на виртуальной машине Azure.
- Если пропускная способность между источником и целью ограничена, рассмотрите возможность установки mydumper рядом с источником, а myloader — рядом с целевым сервером. Вы можете использовать инструменты Azcopy для перемещения данных из локальных или других облачных решений в Azure.
- Если ваш источник находится в локальной среде и использует подключение с высокой пропускной способностью к Azure (через ExpressRoute), рассмотрите возможность установки этого инструмента на виртуальной машине Azure.
Установите клиент MySQL, выполнив следующие действия.
- Обновите индекс пакетов на виртуальной машине Azure под управлением Linux, выполнив следующую команду:
sudo apt update
- Установите пакет клиента MySQL, выполнив следующую команду:
sudo apt install mysql-client
Установка mydumper/myloader
Чтобы установить mydumper и myloader, выполните следующие действия.
В зависимости от дистрибутива ОС, скачайте соответствующий пакет для 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) поможет найти свой дистрибутив.
Чтобы установить DEB-файл пакета для mydumper, выполните следующую команду:
sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
Совет
Команда, используемая для установки пакета, будет отличаться в зависимости от используемого дистрибутива Linux, так как их установщики отличаются. Инструменты mydumper и myloader доступны для приведенных дистрибутивов Fedora, RedHat, Ubuntu, Debian, CentOS, 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 здесь.
Связанный контент
- Проект mydumper/myloader в GitHub
- перенос больших баз данных MySQL
- Минимальное время простоя База данных Azure для MySQL — отдельный сервер на База данных Azure для MySQL — гибкий сервер
- Репликация данных в гибкий сервер База данных Azure для MySQL
- Настройка репликации гибких данных сервера База данных Azure для MySQL
- Ошибки миграции