Migrar bancos de dados grandes para o Banco de Dados do Azure para MySQL usando mydumper/myloader
O Banco de Dados do Azure para MySQL é um serviço gerenciado usado para executar, gerenciar e dimensionar Bancos de Dados MySQL altamente disponíveis na nuvem. Para migrar os bancos de dados MySQL com mais de 1 TB para o Banco de Dados do Azure para MySQL, considere o uso de ferramentas da comunidade, como mydumpr/myuploader, que oferecem os seguintes benefícios:
- Paralelismo, para ajudar a reduzir o tempo de migração.
- Melhor desempenho, evitando rotinas de conversão de conjunto de caracteres que sejam caras.
- Um formato de saída, com arquivos separados para tabelas, metadados, etc., que facilita a exibição/análise de dados. Consistência, mantendo o instantâneo em todos os threads.
- Posições de log de réplica e primárias precisas.
- Gerenciamento fácil, pois eles dão suporte a PCRE (expressões regulares compatíveis com Perl) para especificar inclusões e exclusões de bancos de dados e de tabelas.
- O esquema e os dados vão juntos. Não é necessário tratá-los separadamente, como outras ferramentas de migração lógica.
Este guia de início rápido mostra como instalar, fazer backup e restaurar um banco de dados MySQL usando mydumpr/myuploader.
Pré-requisitos
Antes de começar a migrar seu banco de dados MySQL para o SQL Server, é necessário:
Criar um servidor de Banco de Dados do Azure para MySQL usando o portal do Azure.
Para criar uma VM do Azure que execute o Linux, use o portal do Azure (de preferência, o Ubuntu).
Observação
Antes de instalar as ferramentas, considere os seguintes pontos:
- Se sua fonte for local e tiver uma conexão de alta largura de banda para o Azure (usando o ExpressRoute), considere instalar a ferramenta em uma VM do Azure.
- Se você tiver um desafio na largura de banda entre a origem e o destino, considere a instalação de mydumper próximo à origem e de myuploader próximo ao servidor de destino. Você pode usar ferramentas Azcopy para mover os dados do local ou de outras soluções de nuvem para o Azure.
- Se sua fonte for local e tiver uma conexão de alta largura de banda para o Azure (usando o ExpressRoute), considere instalar a ferramenta em uma VM do Azure.
Instale o cliente mysql, execute as seguintes etapas:
- Execute o seguinte comando para atualizar o índice do pacote na VM do Azure que executa o Linux:
sudo apt update
- Execute o seguinte comando para instalar o pacote cliente mysql:
sudo apt install mysql-client
Instale mydumper/myloader
Para instalar o mydumpr/myuploader, execute as etapas a seguir.
Dependendo da distribuição do sistema operacional, baixe o pacote adequado para mydumper/myuploader, executando o seguinte comando:
wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
Observação
$(lsb_release -cs) ajuda a identificar a sua distribuição.
Para instalar o pacote .deb para mydumper, execute o seguinte comando:
sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
Dica
O comando que você usa para instalar o pacote será diferente com base na distribuição do Linux que tiver, pois os instaladores são diferentes. O mydumpr/myuploader está disponível para as seguintes distribuições Fedora, RedHat, Ubuntu, Debian, openSUSE e MacOSX. Para obter mais informações, confira Como instalar o mydumper
Criar um backup usando mydumper
Para criar um backup usando mydumper, execute o seguinte comando:
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
Esse comando usa as seguintes variáveis:
-host: o host ao qual se conectar
-user: nome de usuário com os privilégios necessários
-password: senha do usuário
-rows: tentar dividir as tabelas em partes desta quantidade de linhas
-outputdir: diretório para o qual despejar arquivos de saída
-regex: expressão regular para correspondência de banco de dados.
-trx-consistency-only: somente consistência transacional
-threads: número de threads a serem usados, padrão 4. É recomendado usar um valor igual a 2x do vCore do computador.
Observação
Para obter mais informações sobre outras opções que você pode usar com mydumper, execute o seguinte comando: mydumper --help. Para mais detalhes, leia a Documentação de mydumper\myloader
Para despejar vários bancos de dados em paralelo, você pode modificar a variável regex conforme mostrado no exemplo: regex ’^(DbName1.|DbName2.)
Restaurar seu banco de dados usando o myuploader
Para restaurar o banco de dados do qual foi feito o backup usando o mydumper, execute o seguinte comando:
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
Esse comando usa as seguintes variáveis:
- -host: o host ao qual se conectar
- -user: nome de usuário com os privilégios necessários
- -password: senha do usuário
- -directory: local onde o backup é armazenado.
- -queries-per-transaction: recomenda a configuração para valor não superior a 500
- -threads: número de threads a serem usados, padrão 4. É recomendado usar um valor igual a 2x do vCore do computador.
Dica
Para obter mais informações sobre outras opções que você pode usar com myloader, execute o seguinte comando: myloader --help
Depois que o banco de dados é restaurado, é sempre recomendado validar a consistência dos dados entre os bancos de dado de origem e de destino.
Observação
Envie quaisquer problemas ou comentários sobre as ferramentas mydumpr/myuploader aqui .