
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; 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.
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.
Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…
Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…
O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…
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…
Escreva 31 de agosto de 2026 em PHP 8.3 sem aquele array com os doze meses, usando IntlDateFormatter com pattern…
Listagem de CPT com meta_query que demora segundos: veja o EXPLAIN da query do WP_Query e o índice composto em…