Migrar um banco de dados MySQL para outro servidor pode ser um desafio, especialmente se você busca tempo de inatividade mínimo e desempenho rápido.
Uma das ferramentas mais populares para realizar essa tarefa é o mysqldump, um utilitário fornecido pelo MySQL para fazer backup e restaurar bancos de dados. Neste artigo, vamos orientá-lo no uso do mysqldump para migrar seu banco de dados e criar um script para automatizar o processo.

Pré-requisitos
- Servidores de origem e destino com MySQL instalado
- Credenciais root do MySQL ou uma conta com privilégios suficientes em ambos os servidores
- Acesso SSH a ambos os servidores ou o servidor de DB precisa permitir conexões de entrada (caso não esteja na mesma máquina)
Contents
Exportar o banco de dados usando mysqldump
O primeiro passo no processo de migração é criar um backup do banco de dados de origem. Usaremos o mysqldump para isso. O mysqldump cria um script SQL contendo todos os comandos necessários para recriar a estrutura do banco de dados e os dados no servidor de destino.
Faça login no servidor de origem e execute o seguinte comando para criar um backup compactado do seu banco de dados:
mysqldump -u [username] -p --single-transaction --extended-insert --quick --lock-tables=false [database_name] | gzip > [backup_file].sql.gzSubstitua [username], [database_name] e [backup_file] pelo seu nome de usuário MySQL, o nome do banco de dados que deseja migrar e o nome desejado do arquivo de backup, respectivamente.
Este comando usa a opção --single-transaction para garantir a consistência dos dados, --quick para reduzir o uso de memória e –lock-tables=false para evitar o bloqueio de tabelas durante o processo de exportação.
O parâmetro mais importante é –extended-insert. Isso tornará a importação do arquivo SQL exportado de 10 a 15 vezes mais rápida no servidor de destino.
Transferir o arquivo de backup para o servidor de destino
Depois de criar o backup, você pode importá-lo para o outro servidor de banco de dados.
- Copie o arquivo gzip compactado para o servidor e importe-o
- Descompacte o arquivo e carregue-o com o MySQL via SSH no servidor de DB
Para transferi-lo para o servidor de destino, você pode usar uma ferramenta como SCP, SFTP ou rsync. Por exemplo, para usar SCP:
scp [backup_file].sql.gz [destination_user]@[destination_ip]:/path/to/destinationSubstitua [backup_file], [destination_user], [destination_ip] e /path/to/destination pelos valores apropriados.
Importar o banco de dados no servidor de destino
Após a transferência do arquivo de backup, faça login no servidor de destino e execute o seguinte comando para importar o banco de dados:
gunzip < [backup_file].sql.gz | mysql -u [username] -p [database_name]Substitua [username], [database_name] e [backup_file] pelo seu nome de usuário MySQL, o nome do banco de dados que deseja migrar e o nome do arquivo de backup, respectivamente.
Baixar o script de migração de banco de dados
Para automatizar o processo de migração do banco de dados MySQL, você pode usar este script bash que utilizamos aqui no wp-staging.com para migrar nosso banco de dados para um managed DB hospedado na DigitalOcean. (Não é mais usado, pois o WP Staging agora pode realizar a migração de banco de dados):
#!/bin/sh
# migrate.sh
sourceUser=""
sourcePassword=""
sourceHostname=""
sourcePort=""
sourceDatabase=""
destinationUser=""
destinationPassword=""
destinationHostname=""
destinationPort=""
destinationDatabase=""
echo "Exporting $sourceDatabase database to ./wp-staging.com.sql"
start_export=`date +%s`
mysqldump -P $sourcePort -h $sourceHostname -u $sourceUser -p$sourcePassword --set-gtid-purged=OFF --extended-insert --single-transaction --skip-lock-tables --column-statistics=0 $sourceDatabase > ./wp-staging.com.sql
# Done creating a dump of wp-staging.com
end_export=`date +%s`
echo "Database exported in" $((end_export-start_export)) "seconds"
echo "Importing Database to... "
start_import=`date +%s`
mysql -u $destinationUser -p$destinationPassword -h $destinationHostname -P $destinationPort $destinationDatabase < ./wp-staging.com.sql
# Done importing the dump to managed db
end_import=`date +%s`
echo "Database imported in" $((end_import-start_import)) "seconds"
echo "Total runtime: " $((end_export-start_export+end_import-start_import)) "seconds"
Substitua os valores das credenciais do banco de dados no início do arquivo pelas informações apropriadas para seus bancos de dados de origem e destino.
Antes de executar o script, certifique-se de que os bancos de dados de origem e destino estejam acessíveis.
Em seguida, conceda permissões de execução ao script:
chmod +x migrate.shExecute o script para realizar a migração:
./migrate.shEste script exporta o banco de dados de origem usando mysqldump, importa o banco de dados no servidor de destino usando o comando mysql e, em seguida, limpa removendo o arquivo de backup.
Artigos relacionados
- Migre seu site WordPress para outro host
- Referência de comandos Linux e Docker e resolução de problemas
- Como criar um site de staging e clonar o WordPress
- Como excluir todos os pedidos do WooCommerce e dados do cliente no site de staging | Excluir transações do WooCommerce
- Como migrar o WordPress para um novo servidor