Executar uma migração de dados em massa
Este guia é uma referência operacional passo a passo para executar uma migração de dados de uma instalação local ou PaaS do Adobe Commerce para o Adobe Commerce as a Cloud Service usando a ferramenta de migração de dados em massa. Os valores reais de configuração e os detalhes específicos do ambiente variam de acordo com a sua configuração.
Antes de começar, confirme se você concluiu cada item da lista de verificação de preparação do cliente e verificou o acesso à API com o guia de acesso ao serviço de migração.
Pré-requisitos
- O Docker e o Docker Compose devem estar instalados no computador em que você executa a migração.
- O usuário que está executando a migração deve ter permissão para executar os comandos
dockeredocker compose(ou osdocker-composeherdados). Em Linux, o usuário deve estar no grupodocker. Em macOS e Windows, Docker Desktop deve estar em execução e acessível. A CLI de migração invoca Docker repetidamente e erros de permissão bloqueiam a execução. - A configuração principal deve ser consistente entre a origem e o destino antes de executar a migração. Os dados de configuração principais, como configurações de armazenamento e configuração do sistema, não são migrados por essa ferramenta. Configure no destino de maneira independente e alinhe-o com a origem antes da migração.
Configurar o pacote de ferramentas
Configurar o ambiente para a migração de dados em massa:
-
Extrair o conteúdo de
ccsaas-migration-tools.tar.gz. -
Execute todos os comandos da pasta
ccsaas-migration-toolsextraída, ondebin/consoleestá. -
Verifique se a pasta é gravável para logs, cache, Composer e arquivos gerados.
Altere a propriedade de todos os arquivos e subpastas nesse diretório para o usuário do sistema operacional que executa a migração, para que a ferramenta possa ler e gravar de forma consistente. Por exemplo, em Linux:
chown -R <user>:<group> <project-root>. -
Crie os arquivos
.enve.my.cnfna raiz do projeto copiando os arquivos de exemplo (.example.envpara.enve.my.cnf.examplepara.my.cnf) e preencha os valores descritos nas seções a seguir.
Exemplo de arquivos de configuração
Os arquivos .example.env e .my.cnf.example na raiz do repositório são o ponto de partida para a sua configuração. Copie cada arquivo para seu nome de trabalho e preencha os valores necessários.
.example.env.envMAGENTO_CLOUD_CLI_TOKEN quando id= está definido em .my.cnf). Lista completa de variáveis disponível no arquivo .env..my.cnf.example.my.cnf[section] layouts para locais MySQL e PaaS (id=project:environment). O nome [section] deve corresponder a SOURCE_CONNECTION_NAME em .env. Os campos incluem user, password, host, port, database e id= para PaaS.Configurar o arquivo de ambiente
O arquivo .env na raiz do projeto é a configuração de migração e extração. Ele orienta o pipeline da CLI, incluindo URLs de origem e de destino, OAuth, a conexão remota do CDMS, autenticação SaaS e IMS e outros switches.
https://example.com em vez de https://example.com/.Edite o arquivo .env e defina pelo menos os seguintes valores corretamente. Para obter a lista completa de variáveis com suporte, consulte as anotações em linha em .example.env.
SOURCE_INSTANCE_URL=https://<source-host>
SOURCE_INSTANCE_GRAPHQL_URL=https://<source-host>/graphql
SOURCE_INSTANCE_REST_URL=https://<source-host>/rest
SOURCE_INSTANCE_CONSUMER_KEY=<consumer_key>
SOURCE_INSTANCE_CONSUMER_SECRET=<consumer_secret>
SOURCE_INSTANCE_ACCESS_TOKEN=<access_token>
SOURCE_INSTANCE_ACCESS_TOKEN_SECRET=<access_token_secret>
Configurar credenciais do OAuth de origem
Esses quatro valores assinam solicitações da ferramenta de migração para as APIs do armazenamento de origem. Para obtê-los, abra o Admin de origem e vá para Sistema > Extensões > Integrações. Crie ou abra uma integração e copie os valores em .env:
SOURCE_INSTANCE_CONSUMER_KEY=<consumer_key>
SOURCE_INSTANCE_CONSUMER_SECRET=<consumer_secret>
SOURCE_INSTANCE_ACCESS_TOKEN=<access_token>
SOURCE_INSTANCE_ACCESS_TOKEN_SECRET=<access_token_secret>
Definir o token da CLI da nuvem
.my.cnf. Se a seção SOURCE_CONNECTION_NAME contiver uma linha id= (por exemplo, id=project:production), a origem será Adobe Commerce on Cloud e MAGENTO_CLOUD_CLI_TOKEN será necessário. Para fontes locais sem id=, esse token não é necessário e a configuração do túnel é ignorada.-
Vá para
https://accounts.magento.cloude entre. -
Clique na imagem do seu perfil e selecione Configurações da conta.
-
Vá para a seção Tokens de API.
-
Selecione Criar um token de API, dê a ele um nome descritivo e copie o token gerado.
-
Definir o token em
.env:code language-text MAGENTO_CLOUD_CLI_TOKEN=<your_magento_cloud_api_token>
Alinhar configurações de administração do Commerce
Antes da migração, verifique se as configurações a seguir estão consistentes entre a origem e o destino.
Configurar credenciais SaaS e IMS do público-alvo
Estas são as configurações de IMS e API Adobe Commerce as a Cloud Service para o destino. Você precisa da ID do locatário, da ID da organização, das credenciais de servidor para servidor do IMS OAuth e do host IMS correto para o seu ambiente. Coordene com sua equipe da Adobe a organização, o locatário e o acesso ao perfil. Não tente inferir ou estimar valores sensíveis.
Gerar credenciais IMS
Use o Adobe Developer Console. Você precisa de acesso de Developer ou Admin na organização da Adobe para criar projetos. Um logon básico de usuário não é suficiente para adicionar APIs.
-
Crie um projeto ou abra um existente e selecione Add API.
-
Escolha Adobe Commerce as a Cloud Service e continue.
-
Selecione OAuth Server-to-Server como o tipo de autenticação e continue.
-
Selecione o perfil de produto que sua equipe do Adobe espera para este locatário e selecione Salvar API configurada.
-
Na barra lateral do projeto, abra Servidor para Servidor OAuth (ou Credenciais) e copie a ID do cliente e o segredo do cliente para
.envcomoADOBE_IMS_CLIENT_IDeADOBE_IMS_CLIENT_SECRET.
O ponto de extremidade do token IMS (ADOBE_IMS_URL) deve corresponder ao ambiente da credencial.
ADOBE_IMS_URL típicohttps://ims-na1-stg1.adobelogin.comhttps://ims-na1.adobelogin.comna1 nessas URLs representa a região onde a instância de destino é provisionada. Substitua-o pelo identificador de região apropriado se sua instância estiver provisionada em uma região diferente.ADOBE_IMS_META_SCOPES deve corresponder aos escopos provisionados nessa credencial. O arquivo .example.env inclui a cadeia de caracteres de escopo separada por vírgulas completa como uma referência. Altere-o somente se a Adobe instruir o.
Mapear credenciais de Adobe I/O para o arquivo de ambiente
Em Developer Console, os valores de servidor para servidor OAuth são apresentados como uma ID de cliente e um segredo de cliente, correspondendo à seguinte estrutura JSON:
{
"client_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Mapeie-os para .env (exemplo de espaços reservados):
TARGET_ORG_ID=<org_id>@AdobeOrg
ADOBE_IMS_URL=https://ims-na1.adobelogin.com
ADOBE_IMS_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxx
ADOBE_IMS_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxx
ADOBE_IMS_META_SCOPES=AdobeID,openid,additional_info.projectedProductContext
Os hosts da API SaaS diferem entre pré-produção e produção. TARGET_INSTANCE_REST_URL e TARGET_INSTANCE_GRAPHQL_URL devem usar o mesmo ambiente de API do Commerce que sua migração, seja pré-produção ou produção. Não misture um nível com o CDMS ou locatário do outro nível.
TARGET_INSTANCE_*_URLhttps://na1-sandbox.api.commerce.adobe.com/{tenantId}https://na1.api.commerce.adobe.com/{tenantId}na1 nessas URLs representa a região onde a instância de destino é provisionada. Substitua-o pelo identificador de região apropriado se sua instância estiver provisionada em uma região diferente.TARGET_TENANT_ID=<tenant_id>
TARGET_ORG_ID=<org_id>@AdobeOrg
ADOBE_IMS_URL=https://ims-na1.adobelogin.com
ADOBE_IMS_CLIENT_ID=<client_id>
ADOBE_IMS_CLIENT_SECRET=<client_secret>
ADOBE_IMS_META_SCOPES=AdobeID,openid,additional_info.projectedProductContext
TARGET_INSTANCE_REST_URL=https://na1-sandbox.api.commerce.adobe.com/{tenantId}
TARGET_INSTANCE_GRAPHQL_URL=https://na1-sandbox.api.commerce.adobe.com/{tenantId}/graphql
Para hosts SaaS de produção, substitua na1-sandbox por na1 em ambas as URLs TARGET_INSTANCE_*. Use o ADOBE_IMS_URL correspondente para essa camada, conforme mostrado na tabela anterior.
Definir o endpoint do CDMS
Aponte a ferramenta de migração para o host da API do CDMS que corresponde ao ambiente para o qual você está migrando. Defina CDMS_HOST (e normalmente CDMS_PORT=443) em .env. Use um host, seja de pré-produção ou de produção, não ambos.
CDMS_HOSThttps://commerce-data-migration-service-preprod-external.adobe.iohttps://commerce-data-migration-service-prod-external.adobe.ioDefina ou remova o comentário do bloco que corresponde à sua execução:
# Pre-production CDMS
CDMS_HOST=https://commerce-data-migration-service-preprod-external.adobe.io
CDMS_PORT=443
# Production CDMS (use for prod cutover only)
# CDMS_HOST=https://na1.api.commerce.adobe.com
# CDMS_PORT=443
Definir o código de armazenamento
STORE_CODE é o código de exibição de repositório usado pela ferramenta de migração para chamadas da API REST da instância de origem, criação de cliente de teste sintético e limpeza de dados. Ele também é enviado como o cabeçalho x-store-code durante a fase de carregamento.
O padrão de STORE_CODE é default em .example.env. Verifique se isso corresponde ao código de exibição de armazenamento padrão da instância de origem. Para verificar, na origem Admin, vá para Lojas > Todas as Lojas e verifique a coluna Código para a exibição de loja que deve ser usada. Se o código mostrado lá não for default, atualize STORE_CODE em .env para corresponder.
Configurar o arquivo de conexão de banco de dados
O arquivo .my.cnf fornece configurações de conexão MySQL para o lado da extração da ferramenta de migração. Crie-o copiando .my.cnf.example para .my.cnf na raiz do projeto. O nome da seção deve corresponder a SOURCE_CONNECTION_NAME em .env.
Para uma origem no local ou auto-hospedada:
[<connection-name>]
user=<db_user>
password='<db_password>'
host=<db_host>
port=3306
database=<db_name>
Para uma origem Adobe Commerce on Cloud:
[<connection-name>]
id=<project_id>:<environment>
O campo id= informa à ferramenta que a origem é PaaS e aciona a configuração de túnel usando MAGENTO_CLOUD_CLI_TOKEN. Os valores project_id e environment estão disponíveis em Cloud Console ou pelos comandos magento-cloud project:list e magento-cloud environment:list.
Preparar a rede e as instâncias
A Autenticação básica de HTTP na frente do armazenamento pode bloquear o tráfego da API e da ferramenta. Verifique se está desabilitado para a URL de origem usada pela migração ou se os caminhos da ferramenta são permitidos, para que as solicitações REST e GraphQL possam acessar o armazenamento.
Manter a estabilidade do banco de dados de origem durante a extração
Embora a ferramenta extraia dados do banco de dados de origem, nenhum outro processo deve gravar neles. Gravações simultâneas podem resultar em um instantâneo inconsistente.
- Interrompa o cron na origem e em qualquer agendador do sistema operacional que execute
bin/magentoou outros gravadores para a janela de extração ou verifique se não é possível executá-los durante a extração. - Revise outras integrações, como ERP, OMS, PIM, tarefas personalizadas e APIs de terceiros que gravam no mesmo banco de dados. Pausar ou bloquear gravações para a janela de extração para que nada altere as tabelas enquanto a extração é executada.
- Isso complementa o modo de manutenção e o acesso ao túnel ou ao banco de dados. Juntos, eles reduzem o tráfego da loja e da API. Cron e integrações são fontes separadas de gravações que você deve controlar explicitamente.
Target
Se o catálogo de destino tiver que ser limpo antes da migração, exclua os produtos em Admin em lotes pequenos, por exemplo, 200 de cada vez, para evitar conflitos de catálogo duplicados e tempos limite de exclusão em massa.
Criar e executar a migração
Trabalhar no diretório extraído do projeto com acesso de gravação.
Manter a sessão ativa por SSH
Se você se conectar via SSH, uma rede eliminada poderá eliminar seu shell e interromper uma migração longa. O comando GNU screen mantém a sessão ativa no servidor:
screen -S migration # new session named "migration"
# run ./bin/console commands here; when you want to disconnect without stopping work:
# press Ctrl+A, release, then press d # detach
screen -ls # list sessions
screen -x migration # reattach to "migration"
Você também pode usar tmux se ele estiver disponível no servidor.
Criar a imagem do Docker
Crie a imagem Docker usada por bin/console, que contém PHP, CLI e dependências. Execute-a antes da primeira execução ou depois de Dockerfile ou alterações na imagem base.
./bin/console build
Iniciar os serviços de apoio
Inicie os serviços de apoio Docker Compose da ferramenta, como o banco de dados de teste local e, quando habilitado em .env, os serviços locais opcionais. Os serviços exatos dependem da sua configuração. Execute isso após uma criação bem-sucedida e antes dos comandos shell, migração ou em fases.
./bin/console start
Inicialize o contêiner da CLI
Inicie o contêiner da CLI uma vez para que o ponto de entrada possa concluir a configuração, como uma instalação do Composer, se necessário, em relação ao projeto montado. Execute-o uma vez antes da primeira migração em um novo ambiente.
./bin/console shell
exit
Executar a migração
A ferramenta oferece suporte a duas abordagens de migração. Escolha aquele que se adapta ao seu caso de uso.
Migração monofásica
Nenhum modo de manutenção é necessário na instância de origem. Execute o pipeline de migração completa com um único comando:
./bin/console migration
O comando executa todas as etapas do pipeline automaticamente, de ponta a ponta, na seguinte ordem.
- Verificação de configuração — valida as variáveis de ambiente e a configuração da ferramenta.
- Inicialização do ambiente — inicia os serviços Docker, abre túneis de nuvem (se aplicável) e executa testes de unidade.
- Testes de integração e inicialização do CDMS — executa testes de integração e inicializa a conexão da API do CDMS.
- Criar migração — registra a migração com CDMS e aguarda a análise do esquema de destino. A ID da migração é salva em
.migration_id. - Geração de dados de teste e testes funcionais — executa testes funcionais e gera dados de teste sintéticos na origem para verificação de integridade (se habilitada).
- Extração de dados — extrai dados da instância de origem.
- Carregar no destino — carrega os dados extraídos na instância de destino Adobe Commerce as a Cloud Service. As exibições de preparo são limpas na origem e os dados de teste da origem são removidos por meio de REST em paralelo com a carga.
- Verificação de integridade de dados — aciona a verificação de soma de verificação e executa testes de verificação de API locais. Os resultados são registrados e as falhas não interrompem o pipeline.
- Limpeza de dados de teste no destino — remove os dados de teste sintético da instância de destino.
- Resultados do processo — gera um resumo da migração e, opcionalmente, baixa artefatos do armazenamento.
Use essa opção quando nenhuma janela de manutenção for necessária, o que é típico para execuções secas completas, ambientes de desenvolvimento ou sandbox ou qualquer migração em que a origem possa permanecer ativa durante a extração.
Migração multifásica com modo de manutenção
O modo de manutenção é necessário na instância de origem para garantir a consistência dos dados durante a extração. A migração é dividida em fases distintas que devem ser executadas em ordem.
./bin/console são executados da raiz do projeto da ferramenta de migração. Os comandos bin/magento maintenance:* são executados no servidor de aplicativos Adobe Commerce de origem, por meio de SSH para a raiz de instalação ou por meio de Admin. A ferramenta não emite comandos de manutenção do Magento em seu nome.migration:before-maintenancemigration:during-maintenancemigration:cleanup (opcional)Fase 1 — Antes da manutenção (a origem está ativa)
Executar enquanto a instância de origem está ativa e aceitando tráfego. O acesso REST e GraphQL à origem deve estar totalmente disponível. Não ative o modo de manutenção antes que esta fase seja concluída.
Retorne à raiz do servidor e execute:
./bin/console migration:before-maintenance
- Verificação de configuração — valida as variáveis de ambiente e a configuração da ferramenta.
- Inicialização de ambiente — inicia serviços Docker, abre túneis de nuvem PaaS (se aplicável) e executa testes de unidade.
- Testes de integração e inicialização do CDMS — executa testes de integração e inicializa a conexão da API do CDMS.
- Criar migração — registra a migração com CDMS e aguarda a análise do esquema de destino. A ID da migração é salva em
.migration_id. - Testes funcionais — executa testes funcionais em relação à origem ativa.
- Geração de dados de teste — cria clientes e pedidos de teste sintético na origem para verificação de integridade (se habilitada).
Fase 2 — Habilitar modo de manutenção (manual)
Ative o modo de manutenção na origem e pause todas as atividades que gravam ou afetam o banco de dados, incluindo trabalhos agendados, integrações de terceiros, processamento de pedidos e sincronização de ativos de mídia.
No servidor do Commerce de origem (instalar raiz), execute:
bin/magento maintenance:enable
Fase 3 — Durante a manutenção (a origem está congelada)
Execute com a instância de origem no modo de manutenção. A origem deve permanecer congelada por toda a duração desta fase. Não desabilite o modo de manutenção até que a Fase 3 seja concluída com êxito.
./bin/console migration:during-maintenance
- Configuração de túnel da nuvem — para instâncias de origem Adobe Commerce on Cloud, reabre túneis da nuvem e verifica a conectividade do banco de dados. Ignorado automaticamente para instâncias locais.
- Extração de dados — extrai dados da instância de origem congelada.
- Limpeza do modo de exibição de preparo — remove os modos de exibição de preparo da origem usando uma conexão direta com o banco de dados (segura no modo de manutenção).
- Carregar no destino — carrega os dados extraídos na instância de destino Adobe Commerce as a Cloud Service e aguarda a conclusão.
- Verificação de integridade de dados — aciona a verificação de soma de verificação CDMS e executa testes de verificação de API locais. Os resultados são registrados e as falhas não interrompem o pipeline.
- Limpeza de dados de teste no destino — remove os dados de teste sintético da instância de destino.
- Resultados do processo — gera um resumo da migração e, opcionalmente, baixa artefatos do armazenamento.
Fase 4 — Desabilitar modo de manutenção (manual, condicional)
Essa fase desativa o modo de manutenção, reativando o tráfego para a instância de origem. Esta etapa é necessária antes de executar a fase de limpeza, pois a limpeza se comunica com a origem por meio de REST e falha com HTTP 503 se o modo de manutenção ainda estiver ativo.
No servidor Commerce de origem, execute:
bin/magento maintenance:disable
Fase 5 — Limpeza (opcional, a origem deve estar ativa)
Remova os clientes e pedidos de teste sintético criados na Fase 1 da instância de origem por meio do REST. Esta fase pode ser executada somente após o modo de manutenção ser desabilitado.
SKIP_TEST_DATA_CREATION=true estiver definido em .env, porque nenhum dado de teste foi criado.Retorne à raiz do servidor e execute:
./bin/console migration:cleanup
- Configuração da conexão do banco de dados — para instâncias de origem Adobe Commerce on Cloud, reabre túneis de nuvem. Para instâncias locais, estabelece e verifica a conectividade direta com o banco de dados.
- Limpeza do Source REST — remove clientes e pedidos de teste sintético da origem por meio da API REST.
Retomar ou executar novamente uma migração
A ferramenta de migração acompanha o progresso usando um arquivo .migration_id na raiz do projeto. Esse arquivo é criado automaticamente quando uma nova migração é iniciada e registra o identificador de migração atual.
Retomar após uma falha
Se uma execução de migração falhar ou for interrompida, execute novamente o mesmo comando para retomar da última etapa bem-sucedida (extração, carregamento ou verificação) em vez de reiniciar do zero. As etapas já concluídas são ignoradas automaticamente.
migration:during-maintenance, a origem deve permanecer no modo de manutenção durante todo o processo. Se a origem tiver sido retirada da manutenção ou os dados tiverem sido alterados entre execuções, a migração retomada poderá produzir resultados inconsistentes.Iniciar uma nova migração
Para descartar uma execução anterior e iniciar uma migração completamente nova, exclua o arquivo .migration_id antes de iniciar a próxima migração:
rm .migration_id
Se .migration_id existir e a migração anterior já tiver sido concluída, a ferramenta imprimirá uma mensagem informando que a migração já foi concluída e aconselhará você a excluir o arquivo.
Revisar logs e depurar
Todos os logs de migração são gravados no diretório logs/ na raiz do projeto e são organizados em subdiretórios com carimbo de data e hora:
logs/
2026-03-23_14-30-00/ ← one directory per run
index.log ← main pipeline log (start here)
...
index.logé o log principal de orquestração de pipeline. Se uma etapa falhar, ela mostrará qual script foi encerrado com um código diferente de zero e o porquê.- Logs por etapa, como
09b_run_load.loge11_verify_data_integrity_local.log, contêm saída detalhada para cada fase.