Backup só do banco da loja Magento basta?
Não. O banco guarda produtos, clientes, pedidos e a maior parte da configuração, mas a loja que vende depende de mais peças: as imagens, o código com módulos e tema, as versões exatas das dependências, as credenciais do ambiente e a configuração do servidor. Restaurar só o banco numa instalação nova devolve os dados sem a loja em volta deles.
A ferramenta de backup do próprio Magento já separava código, mídia e banco em três arquivos, e deixava de fora as pastas var e pub/static. Essa ferramenta está marcada como obsoleta pela Adobe desde as versões 2.1.16, 2.2.7 e 2.3.0, com a recomendação de usar outras tecnologias de backup. O recorte continua útil: uma loja Magento tem partes diferentes, e cada uma precisa estar em algum lugar da cópia.
Aqui o assunto é o que a cópia precisa conter. A prova de que ela restaura é o teste trimestral do calendário de manutenção preventiva.
O que incluir no backup da loja Magento: as oito partes
| Parte | Se faltar na restauração | Onde costuma ficar | Pergunta ao fornecedor |
|---|---|---|---|
| Banco de dados | Sem pedidos, clientes, catálogo e configuração | Servidor de banco ou serviço gerenciado | Com que frequência a cópia roda e onde ela fica fora do servidor? |
pub/media | Produtos sem foto, banners e imagens de blocos quebrados | Pasta da loja ou armazenamento remoto | As imagens entram no mesmo backup ou em outro? |
app/etc/env.php | A loja não conecta no banco e não lê os dados criptografados | Só no servidor, fora do git | Onde está a cópia do env.php e quem tem acesso a ela? |
app/etc/config.php | Lista de módulos ativos e configuração compartilhada diferentes da produção | Repositório | O config.php está versionado e igual ao de produção? |
composer.json e composer.lock | Reinstalação puxa versões diferentes das que estavam no ar | Repositório | O composer.lock do repositório bate com o de produção? |
Código próprio em app/code e app/design | Módulos e tema sob medida perdidos | Repositório | Em nome de quem está o repositório? |
Credenciais do repo.magento.com (auth.json) | A instalação das dependências falha nos pacotes pagos | Fora do repositório | Em qual conta do Commerce Marketplace estão as chaves? |
| Configuração do servidor: nginx, crontab, supervisor dos consumers, versões de PHP e serviços | Loja volta sem cron, sem filas ou com PHP errado | Só no servidor | Existe cópia ou documentação dessa configuração? |
Sobre o pub/media no backup do Magento: as fotos de produto e as imagens de categorias e blocos ficam nessa pasta, e não no banco. Um dump perfeito, sem ela, devolve o catálogo inteiro sem imagem.
Chave de criptografia do env.php no backup: a armadilha mais cara
O Magento guarda alguns dados no banco criptografados com a chave que fica em app/etc/env.php, no item crypt/key (é o mesmo lugar na 2.4.8 e na 2.4.9). No código da 2.4.8-p4, por exemplo, entram nessa lista a senha do SMTP configurada no admin, credenciais de módulos de frete e de pagamento, as chaves do reCAPTCHA, a configuração de 2FA de cada administrador e os segredos das integrações OAuth.
Restaurar o banco com um env.php sem a chave original dá uma loja que abre, mas não consegue ler esses valores: o envio pelo SMTP falha, o módulo de frete ou de pagamento não autentica e as integrações precisam de credenciais novas. Três cuidados:
- guarde uma cópia do
env.phpcom acesso restrito e fora de qualquer pasta pública; - a cada troca de chave com
bin/magento encryption:key:change, faça uma cópia nova doenv.php: a antiga não tem a chave nova, e a Adobe lembra que ela é necessária para decifrar os dados; - não versione o
env.phpnem oauth.json; a documentação do Composer recomenda manter oauth.jsonno.gitignore.
O que não precisa entrar no backup do Magento
Algumas pastas são geradas a partir do código e do banco. Copiar essas pastas só aumenta o tamanho e a duração do backup:
var/cacheevar/page_cache: cache, recriado com a loja em uso;generated: classes geradas pela compilação;pub/static: arquivos publicados pelo deploy de estáticos;- índice do OpenSearch: refeito pela reindexação a partir do banco.
O detalhe é que reconstruir leva tempo. Compilação, deploy de estáticos e reindexação entram na conta da restauração, e com catálogo grande isso pesa. Já var/log e var/report não são necessários para a loja voltar, mas guardar alguns dias deles ajuda a investigar o que aconteceu.
Backup da hospedagem ou snapshot do Adobe Commerce Cloud substituem o seu?
O backup da hospedagem cobre a loja Magento? Pode cobrir, mas cada hospedagem define o próprio serviço. Confirme por escrito:
- O banco é copiado com dump consistente ou só como cópia de arquivos com o banco rodando?
pub/mediaeapp/etcentram na cópia?- A cópia fica fora do servidor e fora da mesma conta?
- Por quantos dias ela é mantida, quem restaura e em quanto tempo?
O snapshot do Adobe Commerce Cloud substitui o backup? Em parte. Pela documentação da Adobe, o snapshot inclui o banco e os volumes montados (var, pub/media, app/etc), mas não o código, que já está no repositório git do projeto, e não pode ser baixado. Snapshot manual existe nos ambientes Starter e nos de integração do Pro, e fica guardado por sete dias. Staging e Production do Pro recebem backups automáticos para recuperação de desastre; o suporte da Adobe entrega o snapshot, mas a restauração do banco fica com você. A base de conhecimento da Adobe avisa ainda que esse snapshot não substitui o backup que a loja deve criar antes de um upgrade.
Se quiser essa conferência feita na sua loja, ela está no que o suporte Magento 2 cobre.
Perguntas frequentes
Backup só do banco da loja Magento basta?
Não. O banco tem produtos, clientes, pedidos e configuração, mas a loja também depende das imagens em pub/media, do código com módulos e tema, do composer.lock, do app/etc/env.php com a chave de criptografia e da configuração do servidor. Sem essas partes, a restauração devolve os dados sem a loja funcionando.
Por que a chave de criptografia do env.php precisa estar no backup?
Porque o Magento guarda criptografados com ela dados como a senha do SMTP, credenciais de módulos de pagamento e frete e segredos de integrações. Restaurado com outra chave, o banco volta com esses valores ilegíveis. Guarde a cópia do env.php com acesso restrito e renove a cópia a cada troca de chave.
O snapshot do Adobe Commerce Cloud substitui o backup?
Não por completo. O snapshot inclui banco e volumes como pub/media e app/etc, mas não o código e não pode ser baixado; o snapshot manual fica guardado por sete dias. A Adobe também avisa que o snapshot de recuperação de desastre não substitui o backup que a loja deve fazer antes de um upgrade.
O backup da hospedagem cobre a loja Magento?
Depende do serviço contratado. Pergunte por escrito se o banco é copiado de forma consistente, se pub/media e app/etc entram, onde a cópia fica guardada, por quantos dias e quem faz a restauração. Sem essas respostas, trate o backup da hospedagem como complemento, e não como a cópia principal.
Fontes oficiais
- Backup and rollback the file system, media, and database (Adobe Experience League)
- Encryption key (Adobe Experience League)
- Configuration files for deployment (Adobe Experience League)
- Backup management (snapshots) (Adobe Experience League)
- Backup (snapshot) on Cloud: FAQ (Adobe Experience League)
- Authentication for privately hosted packages and repositories (Composer)