Magento 2

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.

Post Recentes

Restaurar dump do Magento 2 em outro servidor: trocar a base_url no SQL

Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…

22 horas atrás

Criar exceção customizada em PHP: quando estender Exception compensa

Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…

2 dias atrás

DataProvider Magento 2: form do admin abre com campos vazios ao editar

O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…

3 dias atrás

register_post_meta com show_in_rest: campo personalizado no /wp-json

O meta está no banco mas some do /wp-json/wp/v2/posts. Veja o register_post_meta certo, com single, type, schema de array e…

3 dias atrás

IntlDateFormatter: data por extenso em pt-BR sem array de meses

Escreva 31 de agosto de 2026 em PHP 8.3 sem aquele array com os doze meses, usando IntlDateFormatter com pattern…

4 dias atrás

wp_postmeta lento: índice em meta_key e meta_value para meta_query

Listagem de CPT com meta_query que demora segundos: veja o EXPLAIN da query do WP_Query e o índice composto em…

5 dias atrás