Migrar o tráfego para o Firestore

Esta página descreve a última etapa do processo de migração, em que você monitora a migração e determina quando alternar o tráfego para minimizar o tempo de inatividade do aplicativo.

Estas são as etapas:

  1. Determine se houve erros durante a transferência de dados. Observe as limitações conhecidas atuais para tipos de dados e tamanhos de documentos.
  2. Determine quando é apropriado desligar o tráfego de gravação para o banco de dados de origem.
  3. Determine quando todos os dados (incluindo eventos de mudança recentes) foram replicados para o banco de dados do Firestore com compatibilidade com o MongoDB. Neste ponto, é seguro redirecionar o tráfego de leitura para o novo destino.
  4. Depois que todas as suas cargas de trabalho de aplicativos estiverem lendo dados apenas do Firestore, será seguro ativar e direcionar o tráfego de gravação para o banco de dados do Firestore com compatibilidade com o MongoDB.

Verificar marcos de conclusão da migração

As instruções nesta seção exigem acesso ao Dataflow no console Google Cloud .

No Google Cloud console, acesse a página Dataflow:

Acessar o Dataflow

O banco de dados de origem está recebendo todo o tráfego de leitura e gravação

Depois de iniciar os pipelines do Datastream e do Dataflow, o banco de dados de origem vai continuar recebendo tráfego de leitura e gravação. Use os marcos a seguir para determinar quando a migração pode passar para a próxima etapa:

  • A etapa Eventos de gravação transacional do pipeline do Dataflow não processa mais um backlog de dados, e a taxa de transferência cai para um estado estável baixo que corresponde ao tráfego ativo do banco de dados de origem:

    Eventos de gravação transacionais

  • A atualização de dados na guia Monitoramento do Datastream é mínima e está muito próxima do tráfego em andamento no banco de dados de origem:

    Atualização de dados

Depois que a transferência de dados atingir esse estado estável, avance para a próxima etapa.

Desligue o tráfego de gravação para o banco de dados de origem

Depois de determinar que o stream do Datastream concluiu o preenchimento em massa e que o modelo do Dataflow está fazendo gravações transacionais a uma velocidade constante apenas para mudanças ativas do banco de dados de origem, você pode iniciar o processo de transição. Esse processo exige um pequeno período de inatividade para permitir que todo o tráfego restante seja replicado para o banco de dados de destino do Firestore com compatibilidade com o MongoDB.

  1. Interrompa todo o tráfego de gravação no banco de dados de origem compatível com o MongoDB. Dependendo dos requisitos e da funcionalidade do aplicativo, talvez seja interessante continuar permitindo o tráfego de leitura para o banco de dados de origem.

  2. Monitore a capacidade e os registros do Datastream e a capacidade, o atraso de dados e os registros do Dataflow para garantir que a última parte do tráfego de gravação foi processada.

  3. Inspecione a fila de mensagens inativas. Determine se algum documento não pôde ser gravado no banco de dados de destino durante a migração e decida se vai continuar com a migração.

Migrar o tráfego de leitura para o Firestore

Depois que todos os eventos de fluxo de mudanças pendentes são replicados para o Firestore, os dois bancos de dados contêm exatamente os mesmos dados. Agora é possível transferir o tráfego de leitura e, em seguida, o de gravação.

Se você permitiu o tráfego de leitura para o banco de dados de origem compatível com o MongoDB na etapa anterior:

  1. Transfira o tráfego de leitura.
  2. Verifique se todos os serviços que estavam originalmente conectados ao banco de dados de origem compatível com o MongoDB foram atualizados para realizar leituras do banco de dados do Firestore com compatibilidade com o MongoDB.

Migrar o tráfego de gravação para o Firestore

Depois que a etapa anterior for concluída, será seguro redirecionar o tráfego de gravação do aplicativo diretamente para o Firestore.

Interromper o pipeline de migração

A migração foi concluída. Agora é possível interromper o fluxo do Datastream e o job do Dataflow.

Pause o stream do Datastream:

gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=PAUSED \
--update-mask=state

Para encerrar o pipeline do Dataflow:

  1. Para listar todos os jobs atuais:

    gcloud dataflow jobs list --region="$LOCATION"
    

    A saída vai gerar uma lista de jobs do Dataflow.

  2. Na lista de jobs, encontre o valor NAME com o carimbo de data/hora especificado na variável de ambiente DATAFLOW_START_TIME.

    Formato: dataflow-mongodb-to-firestore-DATAFLOW_START_TIME. Exemplo: dataflow-mongodb-to-firestore-20250514173638.

  3. Receba o JOB_ID correspondente. Por exemplo: 2025-05-14_17_36_39-10772223470853954680.

  4. Execute o comando de encerramento para esse ID do job:

    gcloud dataflow jobs drain \
    JOB_ID \
    --region="$LOCATION"
    

    Exemplo:

    gcloud dataflow jobs drain \
    2025-05-14_17_36_39-10772223470853954680 \
    --region="$LOCATION"
    

A seguir

Para dicas de solução de problemas, consulte Solução de problemas de migração.