Como fazer backup de bancos mysql GIGANTES

Um banco de dados que era acostumado a lidar e gostava de seu esquema de backup era o SQL Server, ele exporta um único arquivo e importa de forma extremamente rápida, mesmo para bancos muito grandes porque praticamente é uma transferência de arquivos de uma máquina para outra, porém com o mysql as coisas ainda podem parecer um pouco pré-históricas, mas vou deixar aqui algumas dicas importantes pra você que pretende fazer o processo de backup/importação de bancos de dados muito grandes no mysql:

Esses dias me deparei com a necessidade de restaurar meus bancos de dados por conta de erros, provavelmente por conta de arquivos corrompidos e descobri que posso copiar a pasta do banco de dados, porém existem grandes ressalvas.

Os bancos de dados ficam localizados em mysql/data, no caso do xampp “C:\xampp\mysql\data”, esse processo de copiar as pastas do banco de dados é intitulada como “Cold Backup” ou “Cópia Física”, é muito mais rápido para bancos gigantes do que exportar arquivos .sql (cópia lógica), mas para funcionar entre servidores diferentes, você precisa seguir estas regras:

1. A Regra de Ouro: O ibdata1

No MySQL/MariaDB (usando o motor InnoDB, que é o padrão), os dados não ficam apenas dentro da pasta com o nome do seu banco. O arquivo ibdata1 (que fica na raiz da pasta data) guarda o “dicionário de dados” e os metadados de todas as tabelas InnoDB.

  • Para funcionar: Você não pode copiar apenas a pasta do banco (ex: /meu_banco_gigante/). Você precisa copiar a pasta do banco E o arquivo ibdata1 do servidor de origem para o de destino.
  • O risco: Se o servidor de destino já tiver outros bancos de dados, ao substituir o ibdata1 dele pelo seu, você apagará o acesso aos bancos que já existiam lá.

 

2. Versões do Servidor

O servidor de origem e o de destino devem ser, preferencialmente, da mesma versão (ou o destino ser uma versão levemente superior). Mover arquivos físicos do MariaDB 11 para um MySQL 5.7, por exemplo, certamente causará erros graves de compatibilidade.

3. O estado dos serviços

Nunca copie os arquivos com o MySQL/MariaDB rodando. Os dados podem estar em cache e não terem sido gravados no disco ainda, o que causaria corrupção (como o erro de checksum que você acabou de ter).

  • Pare o serviço nos dois servidores antes da cópia.

 

Alternativa para Bancos Gigantes (Sem apagar o destino)

Se você precisa mover um banco enorme para um servidor que já tem outros dados e não pode sobrescrever o ibdata1, o melhor caminho é usar o MySQL Workbench ou o comando mysqldump via terminal, que é muito mais robusto que o phpMyAdmin para arquivos grandes.
O comando via terminal seria:

bash
mysqldump -u root -p nome_do_banco > backup.sql

Use o código com cuidado.
Para importar:

bash
mysql -u root -p nome_do_banco < backup.sql

Alternativas Mais Fortes

Se você esta lidando com banco de dados realmente grandes o mysqldump pode ser lento lento porque ele reconstrói o banco linha por linha (comandos INSERT), o que gera um estresse enorme de I/O e processamento.
Se você trabalha com bancos realmente grandes e quer algo próximo da performance e praticidade do SQL Server, existem três caminhos “profissionais” para o MySQL/MariaDB:

1. Transportable Tablespaces (O “.bak” do MySQL)

Desde as versões mais recentes (MySQL 5.6+ / MariaDB 10.x), você pode “destacar” uma tabela ou banco e movê-lo sem precisar do ibdata1 completo.

  • No servidor de origem, você executa: FLUSH TABLES nome_tabela FOR EXPORT;
  • Isso gera um arquivo .cfg. Você copia o .ibd (dados) e o .cfg para o novo servidor.
  • No destino, você usa: ALTER TABLE nome_tabela IMPORT TABLESPACE;
  • Vantagem: É velocidade de cópia de arquivo (disco para disco), quase instantâneo.

2. Mydumper / Myloader (O “Dump” Multi-thread)

O mysqldump é monothread (usa um núcleo só). O Mydumper é uma ferramenta de terceiros (muito usada em ambientes Linux/Produção) que faz o backup de forma paralela.

  • Ele divide o banco em vários arquivos e usa todos os núcleos do processador para exportar e importar.
  • A velocidade de restauração chega a ser 10x superior ao mysqldump tradicional.

3. Percona XtraBackup (O padrão para bancos Gigantes)

Se você lida com servidores Linux, essa é a ferramenta definitiva. Ela faz o que chamamos de “Hot Backup”.

  • Ele copia os arquivos físicos enquanto o banco está rodando, sem travar nada.
  • Para restaurar, basta mover a pasta para o novo servidor e dar um comando de “prepare”.
  • É o que chega mais próximo da experiência de mover um banco de dados de alta disponibilidade.

4. Dica de Ouro para o mysqldump

Se você for obrigado a usar o dump comum, adicione esses parâmetros para acelerar a importação (que é onde costuma demorar mais):

bash
--disable-keys --no-autocommit --single-transaction

Use o código com cuidado.
Isso faz o MySQL parar de checar índices a cada linha e só gravar tudo no final, o que ganha muito tempo.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *