Backup do Magento 2 com mysqldump: dump leve sem as tabelas de log

mysqldump da loja rodando há quarenta minutos e o arquivo já passou de 12 GB. Antes de culpar o servidor, meça report_event, report_viewed_product_index e cron_schedule: em loja com um ano de estrada elas costumam ser metade do dump e não valem um byte de backup.

SELECT table_name, ROUND((data_length + index_length) / 1024 / 1024) AS mb
FROM information_schema.tables
WHERE table_schema = 'magento'
ORDER BY (data_length + index_length) DESC
LIMIT 15;

Dump em duas passadas

A ideia é simples: estrutura de todas as tabelas, dados só das que importam. O Magento recria o conteúdo das descartáveis sozinho na primeira requisição e no primeiro cron. Essa é a lista que eu uso no 2.4.7 e no 2.4.8.

DB=magento
LIXO="report_event report_viewed_product_index report_compared_product_index 
catalog_compare_item customer_visitor customer_log cron_schedule 
adminnotification_inbox"

IGN=""
for T in $LIXO; do IGN="$IGN --ignore-table=$DB.$T"; done

mysqldump --single-transaction --quick --no-tablespaces $IGN $DB > dados.sql
mysqldump --single-transaction --no-tablespaces --no-data $DB $LIXO > vazias.sql

O search_query ficou fora da lista de propósito: tem cara de log, mas é lá que moram os redirecionamentos e a flag de termo sugerido que alguém configurou em Marketing > Termos de Busca. Isso é configuração, não lixo.

Para restaurar, mande os dois na ordem: cat vazias.sql dados.sql | mysql magento. Faça isso num banco vazio ou de teste: o dump traz um DROP TABLE por tabela e apaga o que já estiver lá antes de você perceber.

Duas flags que só doem no MySQL 8

O --no-tablespaces é obrigatório quando o usuário do dump não tem o privilégio PROCESS — sem ele o mysqldump 8 aborta com Access denied logo na primeira tabela. E se o servidor usa GTID, acrescente --set-gtid-purged=OFF, senão o arquivo sai com um SET GLOBAL gtid_purged que trava a importação em outra máquina.

Fecha o pacote com os arquivos de configuração: tar czf config.tar.gz app/etc/env.php app/etc/config.php. Backup de Magento sem o env.php é backup inútil — a crypt key mora lá dentro, e sem ela nada que está criptografado no banco volta a abrir.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

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