Migrar bancos de dados grandes para o Banco de Dados do Azure para MySQL usando mydumper/myloader

APLICA-SE A:Banco de Dados do Azure para MySQL – Servidor ÚnicoBanco de Dados do Azure para MySQL – Servidor Flexível

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:

  1. Criar um servidor de Banco de Dados do Azure para MySQL usando o portal do Azure.

  2. 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.
  3. 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.

  1. 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.

  2. 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: host ao qual se conectar

  • --user: nome de usuário com os privilégios necessários

  • --password: senha do usuário

  • --rows: tente dividir as tabelas em partes dessas diversas linhas

  • --outputdir: diretório para despejar os arquivos de saída para

  • --regex: expressão regular para correspondência de banco de dados.

  • --trx-consistency-only: consistência transacional apenas

  • --threads: o número de threads a serem usados, que é 4 por padrão. É 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: host ao qual se conectar
  • --user: nome de usuário com os privilégios necessários
  • --password: senha do usuário
  • --directory: lugar onde o backup está armazenado.
  • --queries-per-transaction: configuração recomendada para um valor não superior a 500
  • --threads: o número de threads a serem usados, que é 4 por padrão. É 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 .