A forma mais rápida de migrar bancos de dados MySQL para outro servidor com Mysqldump

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.

Migrar bancos de dados MySQL para outro servidor e clonar os dados.

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)

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:

bash
mysqldump -u [username] -p --single-transaction --extended-insert --quick --lock-tables=false [database_name] | gzip > [backup_file].sql.gz

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 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:

bash
scp [backup_file].sql.gz [destination_user]@[destination_ip]:/path/to/destination

Substitua [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:

bash
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):

bash
#!/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:

bash
chmod +x migrate.sh

Execute o script para realizar a migração:

bash
./migrate.sh

Este 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

Rene Hermenau

Autor: Rene Hermenau

Sobre o autor: René Hermenau é o fundador do WP STAGING. Ele trabalha com backups do WordPress, ambientes de staging, migrações, gestão de bases de dados e fluxos de implantação seguros.