Migrar seu banco de dados MySQL para o Banco de Dados do Azure para MySQL - Servidor flexível usando dump e restore

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

Importante

O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?

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

  • Despeje e restaure a partir da linha de comando (usando mysqldump).
  • Despeje e restaure usando PHPMyAdmin.

Você também pode consultar o Guia de Migração de Banco de Dados para obter informações detalhadas e casos de uso sobre a migração de bancos de dados para o Banco de Dados do Azure para o servidor flexível MySQL. Este guia fornece orientação que conduz o planejamento e a execução bem-sucedidos de uma migração do MySQL para o Azure.

Antes de começar

Para percorrer este guia de instruções, você precisa ter:

Gorjeta

Se você está procurando migrar bancos de dados grandes com tamanhos de banco de dados superiores a 1 TB, você pode querer considerar o uso de ferramentas da comunidade como mydumper/myloader que suporta exportação e importação paralelas. Saiba como migrar grandes bancos de dados MySQL.

Casos de uso comuns para despejo e restauração

Os casos de uso mais comuns são:

  • Mudar 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, portanto, o backup lógico e a restauração são a única opção para migrar.

  • Migrando do ambiente local ou da máquina virtual - o banco de dados do Azure para servidor flexível MySQL não oferece suporte à restauração de backups físicos, o que torna o backup lógico e a restauração como a abordagem ONLY.

  • Mover seu armazenamento de backup de armazenamento localmente redundante para armazenamento com redundância geográfica - o Banco de Dados do Azure para servidor flexível MySQL permite configurar o armazenamento localmente redundante ou com redundância geográfica para backup que só é permitido durante a criação do servidor. Assim que o servidor tiver sido aprovisionado, não poderá alterar a opção de redundância do armazenamento de cópias de segurança. Para mover seu armazenamento de backup do armazenamento com redundância local para o armazenamento com redundância geográfica, despejar e restaurar é a ÚNICA opção.

  • A migração de mecanismos de armazenamento alternativos para o InnoDB - Servidor flexível do Banco de Dados do Azure para MySQL oferece suporte apenas ao mecanismo de armazenamento InnoDB e, portanto, não oferece suporte a mecanismos de armazenamento alternativos. Se suas tabelas estiverem configuradas com outros mecanismos de armazenamento, converta-as no formato do mecanismo InnoDB antes da migração para o Banco de Dados do Azure para o servidor flexível MySQL.

    Por exemplo, se você tiver um WordPress ou WebApp usando as tabelas MyISAM, primeiro converta essas tabelas migrando para o formato InnoDB antes de restaurar para o Banco de Dados do Azure para o servidor flexível 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, confirme que utiliza a mesma versão do MySQL nos sistemas de origem e de destino ao capturar as bases de dados. Por exemplo, se o seu servidor MySQL existente for a versão 5.7, você deverá migrar para um Banco de Dados do Azure para instância de servidor flexível do MySQL configurado para executar a versão 5.7. O mysql_upgrade comando não funciona em uma instância de servidor flexível do Banco de Dados do Azure para MySQL e não é suportado.
  • Se você precisar atualizar entre as versões do MySQL, primeiro despeje ou exporte seu banco de dados de versão inferior para uma versão superior do MySQL em seu próprio ambiente. Em seguida, execute mysql_upgrade antes de tentar a migração para um Banco de Dados do Azure para uma instância de servidor flexível do MySQL.

Considerações de desempenho

Para otimizar o desempenho, tome nota destas considerações ao despejar bancos de dados grandes:

  • Use a exclude-triggers opção em mysqldump ao despejar bancos de dados. Exclua gatilhos de arquivos de despejo para evitar que os comandos de gatilho sejam acionados durante a restauração de dados.
  • Use a single-transaction opção para definir o modo de isolamento de transação como REPEATABLE READ e envie uma instrução START TRANSACTION SQL para o servidor antes de despejar dados. Despejar muitas tabelas em uma única transação faz com que algum armazenamento extra seja consumido durante a restauração. A single-transaction opção e a lock-tables opção são mutuamente exclusivas porque LOCK TABLES faz com que quaisquer transações pendentes sejam confirmadas implicitamente. Para despejar tabelas grandes, combine a opção com a single-transactionquick opção.
  • Use a extended-insert sintaxe de várias linhas que inclui várias listas VALUE. Isso resulta em um arquivo de despejo menor e acelera as inserções quando o arquivo é recarregado.
  • Use a order-by-primary opção em mysqldump ao despejar bancos de dados, para que os dados sejam roteirizados na ordem da chave primária.
  • Use a disable-keys opção em mysqldump ao despejar dados, para desativar restrições de chave estrangeira antes de carregar. A desativação de verificações de chaves estrangeiras proporciona ganhos de desempenho. Habilite as restrições e verifique os dados após a carga para garantir a integridade referencial.
  • Use tabelas particionadas quando apropriado.
  • Carregue dados em paralelo. Evite muito paralelismo que faria com que você atingisse um limite de recursos e monitore recursos usando as métricas disponíveis no portal do Azure.
  • Use a opção em mysqldump ao despejar bancos de dados, para que a criação do índice aconteça depois que os defer-table-indexes dados das tabelas forem carregados.
  • Copie os arquivos de backup para um blob/store do Azure e execute a restauração a partir daí, que deve ser muito mais rápida do que executar a restauração na Internet.

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

Crie um banco de dados vazio no Banco de Dados do Azure de destino para a instância flexível do servidor MySQL para onde você deseja migrar os dados. Use uma ferramenta como 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 despejados 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.

Find the connection information in the Azure portal

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

MySQL Workbench Connection String

Preparando o Banco de Dados do Azure de destino para a instância flexível do servidor MySQL para carregamentos de dados rápidos

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

  • max_allowed_packet – definido como 1073741824 (ou seja, 1 GB) para evitar qualquer problema de estouro devido a longas filas.
  • slow_query_log – defina como OFF para desativar o log de consulta lenta. Isso elimina a sobrecarga causada pelo registro lento de consultas durante o carregamento de dados.
  • query_store_capture_mode – defina como NONE para desativar o Repositório de Consultas. Isso elimina a sobrecarga causada pela amostragem de atividades pelo Repositório de Consultas.
  • innodb_buffer_pool_size – Escale o servidor para 32 vCore Memory Optimized SKU a partir da camada de preços do portal durante a migração para aumentar o innodb_buffer_pool_size. Innodb_buffer_pool_size só pode ser aumentada dimensionando a computação para a instância de servidor flexível do Banco de Dados do Azure para MySQL.
  • innodb_io_capacity & innodb_io_capacity_max - Altere para 9000 a partir dos parâmetros do Servidor no portal do Azure para 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 a partir dos parâmetros do Servidor no portal do Azure para melhorar a velocidade da migração.
  • Escalonar a camada de armazenamento – As IOPs para o servidor flexível do Banco de Dados do Azure para MySQL aumentam progressivamente com o aumento da camada de armazenamento. Para cargas mais rápidas, convém aumentar a camada de armazenamento para aumentar as IOPs provisionadas. Lembre-se de que o armazenamento só pode ser ampliado e não reduzido.

Quando a migração estiver 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

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

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

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

Os parâmetros a fornecer são:

  • [uname] O nome de utilizador da sua base de dados
  • [passar] A palavra-passe da sua base de dados (note que não há espaço entre -p e a palavra-passe)
  • [dbname] O nome da sua base de dados
  • [backupfile.sql] O nome do arquivo para o backup do banco de dados
  • [--optar] A opção mysqldump

Por exemplo, para fazer backup de um banco de dados chamado 'testdb' em seu servidor MySQL com o nome de usuário 'testuser' e sem senha para um arquivo testdb_backup.sql, use o seguinte comando. O comando faz backup do testdb banco de dados 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 se a --single-transaction opção não for usada.

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

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

mysqldump -u root -p testdb > testdb_backup.sql

Para selecionar tabelas específicas no banco de dados para backup, liste os nomes das tabelas separados por espaços. Por exemplo, para fazer backup apenas das tabelas table1 e table2 do '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 --database opção e liste os nomes dos bancos de dados separados por espaços.

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

Restaure seu 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 específico recém-criado a partir do arquivo de dump.

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 flexível do servidor flexível do Banco de Dados do Azure para MySQL de destino.

Aqui está um exemplo de como usar este mysql para Single Server :

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

Aqui está um exemplo de como usar este mysql para servidor flexível :

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

Despejar e restaurar usando PHPMyAdmin

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

Nota

Para um único servidor, o nome de usuário deve estar neste formato, 'username@servername', mas para servidor flexível você pode usar apenas 'username' Se você usar 'username@servername' para servidor flexível, a conexão falhará.

Exportar com PHPMyadmin

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

  1. Abra o phpMyAdmin.
  2. Selecione a base de dados. Selecione o nome do banco de dados na lista à esquerda.
  3. Selecione o link Exportar . Uma nova página aparece para exibir o despejo do banco de dados.
  4. Na área Exportar, selecione o link Selecionar tudo para escolher as tabelas em seu banco de dados.
  5. Na área de opções SQL, selecione as opções apropriadas.
  6. Selecione a opção Salvar como arquivo e a opção de compactação correspondente e, em seguida, selecione o botão Ir. Uma caixa de diálogo deve aparecer solicitando que você salve o arquivo localmente.

Importar usando PHPMyAdmin

Importar seu banco de dados é semelhante a exportar. Efetue as seguintes ações:

  1. Abra o phpMyAdmin.
  2. Na página de configuração do phpMyAdmin, selecione Adicionar para adicionar sua instância de servidor flexível do Banco de Dados do Azure para MySQL. Forneça os detalhes da conexão e as informações de login.
  3. Crie um banco de dados com o nome apropriado e selecione-o à esquerda da tela. Para reescrever o banco de dados existente, selecione o nome do banco de dados, marque todas as caixas de seleção ao lado dos nomes das tabelas e selecione Soltar para excluir as tabelas existentes.
  4. Selecione o link SQL para mostrar a página onde você pode digitar comandos SQL ou carregar seu arquivo SQL .
  5. Use o botão Procurar para localizar o arquivo de banco de dados.
  6. Selecione o botão Ir para exportar o backup, executar os comandos SQL e recriar seu banco de dados.

Problemas Conhecidos

Para problemas conhecidos, dicas e truques, recomendamos que você veja nosso blog techcommunity.

Próximos passos

  • Conecte aplicativos ao Banco de Dados do Azure para servidor flexível MySQL.
  • Para obter mais informações sobre como migrar bancos de dados para o Banco de Dados do Azure para o servidor flexível MySQL, consulte o Guia de Migração de Banco de Dados.
  • Se você está procurando migrar bancos de dados grandes com tamanhos de banco de dados superiores a 1 TB, você pode considerar o uso de ferramentas da comunidade como mydumper/myloader , que suporta exportação e importação paralelas. Saiba como migrar grandes bancos de dados MySQL.