Migrar seu banco de dados MySQL para o Banco de Dados do Azure para MySQL - Servidor flexível usando dump e restore
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:
- Um Banco de Dados do Azure para instância do Servidor Flexível MySQL - Portal do Azure
- utilitário de linha de comando mysqldump instalado em uma máquina.
- MySQL Workbench ou outra ferramenta MySQL de terceiros para fazer dump e restaurar comandos.
Gorjeta
Se você está procurando migrar grandes bancos de dados com tamanhos de banco de dados superiores a 1 TB, você pode querer considerar o uso de ferramentas de 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.
Migração de ambiente local ou 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 ÚNICA.
Mover seu armazenamento de backup de armazenamento localmente redundante para armazenamento com redundância geográfica - O Servidor Flexível do Banco de Dados do Azure para 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 - Banco de Dados do Azure para o Servidor Flexível 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 do Servidor Flexível MySQL configurado para executar a versão 5.7. O
mysql_upgrade
comando não funciona em uma instância do Banco de Dados do Azure para Servidor Flexível 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 uma instância do Servidor Flexível do Banco de Dados do Azure para 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. Asingle-transaction
opção e alock-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 asingle-transaction
opção com aquick
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 a instância do Servidor Flexível MySQL
Crie um banco de dados vazio no Banco de Dados do Azure de destino para a instância do Servidor Flexível 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 instância do Servidor Flexível do Banco de Dados do Azure para MySQL.
Adicione as informações de conexão ao seu MySQL Workbench.
Preparar o Banco de Dados do Azure de destino para a instância do Servidor Flexível MySQL para carregamentos de dados rápidos
Para preparar o Banco de Dados do Azure de destino para a instância do Servidor Flexível 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 do 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.
- Escale a camada de armazenamento – As IOPs do Banco de Dados do Azure para o Servidor Flexível 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 de destino do Banco de Dados do Azure para o Servidor Flexível MySQL.
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
Nota
Você também pode usar o utilitário cliente MySQL Workbench para restaurar o banco de dados MySQL.
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:
- Abra o phpMyAdmin.
- Selecione a base de dados. Selecione o nome do banco de dados na lista à esquerda.
- Selecione o link Exportar . Uma nova página aparece para exibir o despejo do banco de dados.
- Na área Exportar, selecione o link Selecionar tudo para escolher as tabelas em seu banco de dados.
- Na área de opções SQL, selecione as opções apropriadas.
- 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:
- Abra o phpMyAdmin.
- Na página de configuração do phpMyAdmin, selecione Adicionar para adicionar sua instância do Banco de Dados do Azure para o Servidor Flexível MySQL. Forneça os detalhes da conexão e as informações de login.
- 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.
- Selecione o link SQL para mostrar a página onde você pode digitar comandos SQL ou carregar seu arquivo SQL.
- Use o botão Procurar para localizar o arquivo de banco de dados.
- 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.