Compartilhar via


Migrar seu banco de dados MySQL para o Banco de Dados do Azure para MySQL – Servidor flexível usando despejo e restauração

Este artigo descreve duas maneiras comuns de fazer backup e restaurar bancos de dados no servidor flexível do Banco de Dados do Azure para MySQL.

  • Faça despejo e restauração da linha de comando (usando mysqldump).
  • Faça despejo e restauração usando o PHPMyAdmin.

Você também pode conferir o Guia de migração de banco de dados para obter informações detalhadas e casos de uso sobre como migrar bancos de dados para o Banco de Dados do Azure para MySQL com Servidor Flexível. Este guia fornece diretrizes que orientam o planejamento e a execução bem-sucedidos de uma migração do MySQL para o Azure.

Antes de começar

Para acompanhar este guia de instruções, você precisa do seguinte:

Dica

Se você quiser migrar grandes bancos de dados com tamanhos de banco de dados maiores que 1 TBs, considere o uso de ferramentas da comunidade, como mydumper/myloader, que dá suporte à importação e exportação paralelas. Saiba como migrar grandes bancos de dados do MySQL.

Casos de uso comuns de despejo e restauração

Os casos de uso mais comuns são:

  • Mover de outro provedor de serviços gerenciados – a maioria dos provedores de serviços gerenciados pode não fornecer acesso ao arquivo de armazenamento físico por motivos de segurança, de modo que a restauração e o backup lógicos são a única opção para migrar.

  • Migrar do ambiente local ou da máquina virtual: o servidor flexível do Banco de Dados do Azure para MySQL não dá suporte à restauração de backups físicos, o que torna a restauração e o backup lógicos a ÚNICA abordagem.

  • Mover o armazenamento de backup do armazenamento com redundância local para o armazenamento com redundância geográfica: o servidor flexível do Banco de Dados do Azure para MySQL permite configurar o armazenamento com redundância local ou com redundância geográfica para backup somente durante a criação do servidor. Depois de o servidor ser provisionado, você não poderá alterar a opção de redundância do armazenamento de backup. Para mover o armazenamento de backup do armazenamento com redundância local para o armazenamento com redundância geográfica, a ÚNICA opção é usar despejo e restauração.

  • Migrar de mecanismos de armazenamento alternativos para o InnoDB: o servidor flexível do Banco de Dados do Azure para MySQL dá suporte apenas ao mecanismo de armazenamento InnoDB e, portanto, não é compatível com mecanismos de armazenamento alternativos. Se as tabelas foram configuradas com outros mecanismos de armazenamento, converta-as para o formato do mecanismo InnoDB antes da migração para o servidor flexível do Banco de Dados do Azure para MySQL.

    Por exemplo, se você tiver um WordPress ou aplicativo Web usando as tabelas MyISAM, primeiro converta essas tabelas migrando em formato de InnoDB antes de restaurar o servidor flexível do Banco de Dados do Azure para MySQL. Use a cláusula ENGINE=InnoDB para definir o mecanismo usado ao criar uma nova tabela e, em seguida, transfira os dados para a tabela compatível antes da restauração.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Importante

  • Para evitar problemas de compatibilidade, verifique se a mesma versão do MySQL é usada nos sistemas de origem e de destino ao despejar bancos de dados. Por exemplo, se seu servidor existente do MySQL tem a versão 5.7, então você deve migrar para uma instância de servidor flexível do Banco de Dados do Azure para MySQL configurada para executar a versão 5.7. O comando mysql_upgrade não funciona e não é suportado em uma instância de servidor flexível do Banco de Dados do Azure para MySQL.
  • Se você precisar fazer upgrade das versões do MySQL, primeiro despeje ou exporte seu banco de dados da versão inferior para uma versão posterior do MySQL no seu ambiente. Em seguida, execute mysql_upgrade antes de tentar migrar para uma instância do servidor flexível do Banco de Dados do Azure para MySQL.

Considerações sobre o desempenho

Para otimizar o desempenho, observe essas considerações ao despejar grandes bancos de dados:

  • Use a opção exclude-triggers em mysqldump ao despejar bancos de dados. Exclua os gatilhos de arquivos de despejo para evitar que os comandos de gatilho acionem durante a restauração de dados.
  • Use a opção single-transaction para definir o modo de isolamento da transação para REPEATABLE READ e enviar uma instrução SQL START TRANSACTION para o servidor antes de despejar os dados. Despejar muitas tabelas em uma única transação pode fazer com que alguns armazenamentos adicionais sejam consumidos durante a restauração. A opção single-transaction e a opção lock-tables são mutuamente exclusivas, porque LOCK TABLES faz com que as transações pendentes sejam confirmadas implicitamente. Para despejar tabelas grandes, combine a opção single-transaction com a opção quick.
  • Use a sintaxe de várias linhas extended-insert, que inclui várias listas VALUE. O resultado será um arquivo de despejo menor e inserções mais rápidas quando o arquivo é recarregado.
  • Use a opção order-by-primary em mysqldump ao despejar bancos de dados, para que os dados sejam executados na ordem de chave primária.
  • Use a opção disable-keys em mysqldump ao despejar dados, para desabilitar as restrições de chave estrangeira antes da carga. Desabilitar as verificações de chave estrangeira proporciona ganhos de desempenho. Habilite as restrições e verifique os dados após o carregamento para garantir a integridade referencial.
  • Use tabelas particionadas, quando apropriado.
  • Carregar dados em paralelo. Evite o excesso de paralelismo que poderá fazer com que você atinja um limite de recursos e monitore os recursos usando as métricas disponíveis no portal do Azure.
  • Use a opção defer-table-indexes em mysqldump ao despejar bancos de dados, para que a criação de índice ocorra após os dados de tabelas que são carregados.
  • Copie os arquivos de backup para um blob/armazenamento do Azure e execute a restauração de lá, o que deve ser muito mais rápido do que executar a restauração pela Internet.

Criar um banco de dados na instância de servidor flexível do Banco de Dados do Azure para MySQL de destino

Crie um banco de dados vazio na instância de servidor flexível do Banco de Dados do Azure para MySQL de destino para o qual você deseja migrar os dados. Use uma ferramenta, como o MySQL Workbench ou mysql.exe, para criar o banco de dados. O banco de dados pode ter o mesmo nome que o banco de dados que contém os dados de despejo ou você pode criar um banco de dados com um nome diferente.

Para se conectar, localize as informações de conexão na Visão Geral da sua instância de servidor flexível do Banco de Dados do Azure para MySQL.

Captura de dados de Encontrar as informações de conexão no portal do Azure.

Adicione as informações de conexão ao MySQL Workbench.

Captura de tela da cadeia de conexão do MySQL Workbench.

Preparar a instância de servidor flexível do Banco de Dados do Azure para MySQL de destino para cargas de dados rápidas

Para preparar a instância de servidor flexível do Banco de Dados do Azure para MySQL de destino para carregamentos de dados mais rápidos, os parâmetros de servidor e a configuração a seguir precisam ser alterados.

  • max_allowed_packet – defina como 1073741824 (ou seja, 1 GB) para evitar qualquer problema de estouro devido a linhas longas.
  • slow_query_log – defina como OFF para desativar o log de consultas lentas. Isso elimina sobrecarga causada pelo log de consulta lento durante cargas de dados.
  • query_store_capture_mode – defina como NONE para desativar o Repositório de Consultas. Isso elimina a sobrecarga causada pelas atividades de amostragem por Repositório de Consultas.
  • innodb_buffer_pool_size – escale verticalmente o servidor para 32 de SKU com otimização de memória vCore do tipo de preço do portal durante a migração para aumentar o innodb_buffer_pool_size. Innodb_buffer_pool_size só pode ser aumentado escalando verticalmente a computação da instância de servidor flexível do Banco de Dados do Azure para MySQL.
  • innodb_io_capacity & innodb_io_capacity_max – altere para 9.000 dos Parâmetros do servidor no portal do Azure a fim de melhorar a utilização de E/S para otimizar a velocidade de migração.
  • innodb_write_io_threads & innodb_write_io_threads – altere para 4 nos Parâmetros do servidor no portal do Azure para melhorar a velocidade da migração.
  • Escalar verticalmente a camada de armazenamento: os IOPs do servidor flexível do Banco de Dados do Azure para MySQL aumentam progressivamente com o aumento na camada de armazenamento. Para cargas mais rápidas, aumente a camada de armazenamento para aumentar os IOPs provisionados. Lembre-se de que o armazenamento só pode ser escalado verticalmente, não para baixo.

Quando a migração for concluída, você poderá reverter os parâmetros do servidor e a configuração da camada de computação para seus valores anteriores.

Despejar e restaurar usando o utilitário mysqldump

Criar um arquivo de backup a partir da linha de comando usando mysqldump

Para fazer backup de um banco de dados MySQL no servidor local ou em uma máquina virtual, execute o seguinte comando:

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

Os seguintes parâmetros devem ser fornecidos:

  • [uname] Seu nome de usuário do banco de dados
  • [pass] A senha do banco de dados (observe que não há nenhum espaço entre -p e a senha)
  • [dbname] O nome do banco de dados
  • [backupfile.sql] O nome do arquivo para o backup do banco de dados
  • [-opt] A opção mysqldump

Por exemplo, para fazer backup de um banco de dados chamado “testdb” no servidor MySQL com o nome de usuário “testuser” e nenhuma senha para um arquivo testdb_backup.sql, use o comando a seguir. O comando faz backup do banco de dados testdb em um arquivo chamado testdb_backup.sql, que contém todas as instruções SQL necessárias para recriar o banco de dados. Verifique se o nome de usuário "testuser" tem pelo menos o privilégio SELECT para tabelas despejadas, SHOW VIEW para exibições despejadas, TRIGGER para gatilhos despejados e LOCK TABLES caso a opção --single-transaction não seja usada.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Agora execute mysqldump para criar o backup do banco de dados testdb

mysqldump -u root -p testdb > testdb_backup.sql

Para selecionar tabelas específicas em seu banco de dados para backup, liste os nomes de tabela, separados por espaços. Por exemplo, para fazer backup somente das tabelas table1 e table2 de “testdb”, siga este exemplo:

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

Para fazer backup de mais de um banco de dados ao mesmo tempo, use a opção --database e liste os nomes dos banco de dados separados por espaços.

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

Restaurar o banco de dados MySQL usando a linha de comando

Depois de criar o banco de dados de destino, você pode usar o comando mysql para restaurar os dados no banco de dados recém-criado do arquivo de despejo.

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

Neste exemplo, restaure os dados no banco de dados recém-criado na instância de servidor flexível do Banco de Dados do Azure para MySQL de destino.

Aqui está um exemplo de como usar esse mysql para Servidor Único:

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

Aqui está um exemplo de como usar esse mysql para Servidor Flexível:

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

Despejo e restauração usando o PHPMyAdmin

Siga estas etapas para despejar e restaurar um banco de dados usando PHPMyadmin.

Observação

Para um único servidor, o nome de usuário precisa estar neste formato: "username@servername". No entanto, para um servidor flexível, você poderá usar apenas "username". Se usar "username@servername" para o servidor flexível, a conexão falhará.

Exportar com PHPMyadmin

Para exportar, você pode usar a ferramenta phpMyAdmin que você pode já ter instalado localmente em seu ambiente. Para exportar o banco de dados MySQL usando PHPMyAdmin:

  1. Abra o phpMyAdmin.
  2. Selecione o banco de dados. Selecione o nome do banco de dados na lista à esquerda.
  3. Selecione o link Exportar. Aparece uma nova página para exibir o despejo do banco de dados.
  4. Na área de Exportação, clique no link Selecionar Tudo para selecionar as tabelas no banco de dados.
  5. Na área de opções do SQL, clique nas opções apropriadas.
  6. Clique na opção Salvar como arquivo e na opção de compactação correspondente e selecione o botão Ir. Uma caixa de diálogo deve aparecer solicitando que você salve o arquivo localmente.

Importar usando PHPMyAdmin

Importar o banco de dados é semelhante à exportação. As seguintes ações ocorrem:

  1. Abra o phpMyAdmin.
  2. Na página de configuração do phpMyAdmin, selecione Adicionar para adicionar a instância de servidor flexível do Banco de Dados do Azure para MySQL. Forneça os detalhes de conexão e informações de logon.
  3. Crie um banco de dados com o nome adequado e selecione-o na lista à esquerda da tela. Para reconfigurar o banco de dados existente, clique no nome do banco de dados, selecione todas as caixas de seleção ao lado dos nomes da tabela e selecione Remover para excluir as tabelas existentes.
  4. Selecione o link SQL para mostrar a página na qual você pode digitar os comandos SQL ou fazer upload do arquivo SQL.
  5. Use o botão procurar para localizar o arquivo do banco de dados.
  6. Clique no botão Ir para exportar o backup, execute os comandos SQL e recrie o banco de dados.

Problemas conhecidos

Para problemas conhecidos, dicas e truques, recomendamos consultar nosso blog techcommunity.