← Voltar ao blog

Migração do Magento 1 para o Magento 2: dados, SEO e plano de cutover

Rodrigo Biazzi

O Magento 1 chegou ao fim da vida em junho de 2020, e ainda há lojas rodando nele, muitas vezes remendadas à mão e presas em versões antigas do PHP. Movê-las para o Magento 2.4.8 tem menos a ver com a ferramenta que copia os dados e mais com planejamento: o que migrar, como manter o ranking nos buscadores e como fazer a troca sem perder pedidos.

Este é o plano que sigo em uma migração do Magento 1 para o Magento 2. Ele é dividido em quatro frentes que rodam em paralelo: dados, código e tema, SEO e cutover.

O que migra e o que não migra

O Data Migration Tool da Adobe move conteúdo do banco de dados. Isso cobre:

  • Produtos, categorias, atributos e attribute sets
  • Clientes, endereços e customer groups
  • Pedidos, invoices, shipments e credit memos
  • CMS pages e blocks, URL rewrites, a maior parte da configuração da loja
  • Cart price rules, catalog price rules e configurações de impostos

Ele não move:

  • Código de extensões, temas ou templates. Esses são reconstruídos para o Magento 2.
  • Arquivos de mídia. Você copia o media/ do Magento 1 para o pub/media/ por conta própria.
  • Dados de tabelas de extensões de terceiros, a menos que você escreva map files para elas.

Antes de mexer na ferramenta, faça um inventário de toda extensão do Magento 1, do que ela guarda no banco e se o negócio ainda precisa dela. Muitas lojas carregam extensões que ninguém usa mais. Cada uma que você descarta é um map file a menos e um módulo do Magento 2 a menos para comprar ou construir.

Frente 1: migração de dados

Configure a ferramenta

Instale um Magento 2.4.8 limpo, sem sample data, e depois adicione o Data Migration Tool na mesma versão do Magento:

composer require magento/data-migration-tool:2.4.8
bin/magento setup:upgrade

A configuração fica em vendor/magento/data-migration-tool/etc/, em uma pasta para o par de edições, como opensource-to-opensource/, com uma subpasta por versão suportada do Magento 1. Escolha a que corresponde à sua loja de origem. Copie o config.xml.dist para config.xml e preencha os dados dos bancos de origem e destino e a crypt_key do app/etc/local.xml do Magento 1. A chave é necessária para manter legíveis valores criptografados, como a configuração de pagamento.

Não edite arquivos dentro de vendor/ diretamente. Copie a configuração e os map files que você alterar para o seu próprio módulo e aponte a ferramenta para eles, para que um update do Composer não apague o seu trabalho.

Rode os três passos

bin/magento migrate:settings --reset path/to/config.xml
bin/magento migrate:data --reset path/to/config.xml
bin/magento migrate:delta path/to/config.xml
  • Settings move websites, stores e configuração.
  • Data move o grosso do conteúdo. Ele roda primeiro as checagens de integridade e para em qualquer campo ou documento de origem que não tenha destino nem regra nos map files.
  • Delta copia as alterações feitas no Magento 1 depois do passo data, como novos pedidos e clientes. A ferramenta rastreia essas alterações com triggers que ela adiciona ao banco do Magento 1.

As falhas na checagem de integridade são o trabalho de verdade. Cada uma significa uma tabela ou coluna de uma extensão ou de uma customização que a ferramenta não conhece. Para cada uma, decida mapear para uma tabela do Magento 2, ignorar no map.xml (em document_rules ou field_rules da origem) ou migrar com o seu próprio script depois que a ferramenta rodar.

<ignore>
    <document>aw_blog_post</document>
</ignore>
<ignore>
    <field>sales_flat_order.legacy_erp_flag</field>
</ignore>

A opção --auto resolve alguns erros de integridade automaticamente. Evito, exceto em testes rápidos, porque ela esconde decisões que você quer tomar de propósito.

Limpe a origem primeiro

A migração é o melhor momento para descartar dados de que você não precisa. Quotes antigas, logs, tabelas de relatórios e carrinhos abandonados podem ser enormes no Magento 1 e deixar lento cada ensaio. Limpe em uma cópia do banco de origem antes de migrar, não no Magento 1 de produção.

Depois do passo data

rsync -a old-server:/var/www/m1/media/catalog/ pub/media/catalog/
bin/magento indexer:reindex
bin/magento catalog:images:resize
bin/magento cache:flush

Depois confira os dados com quem conhece o negócio. Conte produtos, clientes e pedidos dos dois lados. Abra alguns produtos complexos, um configurável com muitos filhos, um bundle, um produto com custom options, e compare com o Magento 1. Faça login como um cliente migrado. O Magento 2 aceita os hashes de senha antigos e os atualiza no login.

Frente 2: código e tema

Esta frente roda em paralelo e normalmente é a mais demorada. Para cada extensão do Magento 1 que fica, decida entre a versão do fornecedor para o Magento 2, outra extensão do Magento 2 que cubra a necessidade, a funcionalidade nativa do Magento 2 ou desenvolvimento custom.

O tema é uma reconstrução de qualquer jeito. Templates do Magento 1 não podem ser portados. Este é o momento de escolher entre um tema baseado em Luma e o Hyvä, que comparo em outro artigo.

Mantenha uma lista de todo comportamento custom do Magento 1: rewrites no config.xml, observers, cron jobs, steps de checkout custom, exportações para ERP. Cada linha vira um ticket no Magento 2 ou uma decisão explícita de descartar.

Frente 3: SEO

O ranking se perde nas migrações porque URLs mudam sem redirects, o conteúdo some ou o novo site entra no ar com erros técnicos. O plano tem três partes.

Monte o inventário de URLs

Antes de qualquer coisa mudar, reúna toda URL que importa:

  • Um crawl completo do site Magento 1 com um crawler como o Screaming Frog.
  • URLs com impressões ou cliques no Google Search Console dos últimos 16 meses.
  • Landing pages com tráfego no analytics.
  • URLs com backlinks externos, de qualquer ferramenta de backlinks que você use.

Junte tudo em uma lista. Essa lista é o conjunto de testes dos redirects.

Mantenha as URLs sempre que der

A ferramenta migra URL keys e URL rewrites, então a maioria das URLs de produto e categoria pode ficar idêntica. Para mantê-las idênticas, reproduza no Magento 2 as configurações do Magento 1:

  • Sufixo de URL de produto e categoria, normalmente .html, em Catalog, Search Engine Optimization.
  • Se as URLs de produto incluem o caminho da categoria.
  • Store codes nas URLs, se o Magento 1 usava.

Cada URL que continua funcionando sem redirect é uma coisa a menos que pode dar errado.

Redirecione o que muda

Para as URLs que mudam, como CMS pages reestruturadas, categorias removidas, um blog que mudou de lugar ou URLs antigas de busca e filtro, crie redirects 301 para a página relevante mais próxima. Não para a home. Para algumas centenas de regras, URL rewrites custom do Magento funcionam. Para milhares, um map no servidor web é mais rápido e mais fácil de manter:

map $request_uri $m1_redirect {
    default "";
    /old-category/old-product.html /new-category/new-product.html;
    /blog/2019/some-post /blog/some-post;
}

server {
    if ($m1_redirect) {
        return 301 $m1_redirect;
    }
}

Depois teste o inventário inteiro de URLs contra o staging: toda URL deve retornar 200 direto ou um único 301 para uma página 200. Sem cadeias, sem 404, sem redirect para a home. Um script curto com curl faz isso em minutos e deve rodar depois de cada ensaio.

Checagens técnicas antes do lançamento

  • Canonical tags em produtos e categorias configuradas do jeito que você quer.
  • Robots meta e robots.txt corretos para produção, não copiados do staging.
  • XML sitemap gerado e acessível, pronto para enviar no Search Console.
  • Titles, meta descriptions e descrições de categoria migrados, não deixados vazios.
  • Dados estruturados de produtos presentes e válidos.

Frente 4: ensaios e cutover

Ensaie a migração completa

Rode a migração completa pelo menos duas vezes em uma cópia nova do banco de produção do Magento 1, cronometrando cada passo. O primeiro ensaio encontra os problemas. O segundo confirma as correções e dá uma duração realista. Se o passo data demora demais para o downtime que o negócio aceita, o modo delta é o que faz funcionar: rode settings e data dias antes do lançamento e só o delta durante a janela de cutover.

Uma regra importa aqui. Entre o passo data e o delta final, não altere entidades migradas no admin do Magento 2. O delta grava no Magento 2 as alterações do Magento 1 e pode sobrescrever ou entrar em conflito com edições feitas lá. Configure coisas novas, mas deixe produtos, clientes e pedidos migrados em paz até o lançamento.

Checklist de cutover

  1. Alguns dias antes: reduza o TTL do DNS para a troca propagar rápido.
  2. Congele alterações de conteúdo no Magento 1. Só pedidos e cadastros de clientes continuam.
  3. No início da janela: coloque o Magento 1 em modo de manutenção para não chegarem novos pedidos.
  4. Rode o migrate:delta final, copie a mídia nova, faça o reindex e limpe os caches.
  5. Smoke test no domínio real a partir de uma rede interna ou do arquivo hosts: navegar, buscar, fazer login, fazer pedidos com cada método de pagamento, conferir se o pedido chega ao ERP ou ao fulfillment.
  6. Troque o DNS ou o load balancer. Mantenha o Magento 1 disponível em modo somente leitura para consulta.
  7. Rode o teste do inventário de URLs contra a produção. Envie o sitemap.

As primeiras semanas

Acompanhe diariamente nas primeiras semanas a cobertura no Search Console e os relatórios de 404, e adicione redirects para o que foi esquecido. Acompanhe os logs de erro do servidor, as taxas de sucesso de pagamento e o fluxo de pedidos para o back office. Alguma oscilação no ranking logo depois do lançamento é normal. O que importa é que os 404 sejam corrigidos rápido e que nada importante tenha ficado sem redirect.

FAQ

O Data Migration Tool move temas e extensões?

Não. Ele move conteúdo do banco de dados, como produtos, clientes, pedidos, conteúdo de CMS, URL rewrites e configuração. Temas e código de extensões precisam ser reconstruídos ou trocados por versões do Magento 2, e os arquivos de mídia são copiados separadamente.

Os clientes mantêm as senhas depois de migrar do Magento 1?

Sim. Os hashes de senha dos clientes são migrados, e o Magento 2 aceita os hashes antigos e os atualiza para o algoritmo atual na próxima vez que o cliente fizer login.

Como evito perder ranking de SEO em uma migração Magento?

Monte um inventário de toda URL com tráfego ou backlinks, mantenha URL keys e sufixos idênticos sempre que possível, adicione redirects 301 para tudo o que mudar e teste a lista completa contra o staging antes do lançamento.

O que é o modo delta no Data Migration Tool?

Depois do passo principal de data, o migrate:delta copia só as alterações feitas no Magento 1 desde então, como novos pedidos e clientes. Ele permite migrar a maior parte dos dados dias antes e manter curta a janela de cutover.

Atendo como freelancer em Magento e Adobe Commerce, de desenvolvimento de módulos e auditorias de performance a migrações e projetos com Hyvä. Se isso for útil, fale comigo.

Artigos relacionados