Migre o tráfego para o Firestore

Esta página descreve a última fase do processo de migração em que monitoriza a migração e determina quando mudar o tráfego para minimizar o tempo de inatividade da sua aplicação.

Estes passos são:

  1. Determine se foram encontrados erros durante a transferência de dados. Tenha em atenção as limitações conhecidas atuais para tipos de dados e tamanhos de documentos.
  2. Determine quando é apropriado encerrar o tráfego de gravação na base de dados de origem.
  3. Determinar quando todos os dados (incluindo eventos de alterações recentes) foram replicados para a base de dados compatível com o MongoDB do Firestore. Neste ponto, é seguro redirecionar o tráfego de leitura para o novo destino.
  4. Depois de todas as cargas de trabalho da aplicação estarem a ler dados de forma consistente apenas a partir do Firestore, é seguro ativar e direcionar o tráfego de escrita para o Firestore com a base de dados de compatibilidade com o MongoDB.

Verifique os marcos de conclusão da migração

As instruções nesta secção requerem acesso ao Dataflow na Google Cloud consola.

Na Google Cloud consola, aceda à página Fluxo de dados:

Aceda ao Dataflow

A base de dados de origem está a receber todo o tráfego de leitura e escrita

Depois de iniciar os pipelines da stream de dados e do fluxo de dados, a base de dados de origem deve continuar a receber tráfego de leitura e gravação. Pode usar os seguintes marcos para determinar quando a migração pode avançar para o passo seguinte:

  • O passo Eventos de gravação transacional do pipeline do Dataflow já não está a processar um backlog dos dados e o débito diminui para um estado estável baixo que corresponde ao tráfego ativo da base de dados de origem:

    Eventos de escrita transacional

  • A atualidade dos dados no separador Monitorização do fluxo de dados é, no mínimo, muito próxima do tráfego em curso na base de dados de origem:

    Atualidade dos dados

Depois de a transferência de dados atingir este estado estável, avance para o passo seguinte.

Desative o tráfego de gravação na base de dados de origem

Depois de determinar que a stream do fluxo de dados concluiu o preenchimento retroativo em massa e que o modelo do Dataflow está a fazer a gravação transacional a uma velocidade constante apenas para alterações em direto da base de dados de origem, pode iniciar o processo de transição. Este processo requer um pequeno período de inatividade para permitir que todo o tráfego restante seja replicado para a base de dados do Firestore de destino com compatibilidade com o MongoDB.

  1. Pare todo o tráfego de gravação para a base de dados de origem compatível com o MongoDB. Consoante os requisitos e a funcionalidade da sua aplicação, pode querer continuar a permitir o tráfego de leitura para a base de dados de origem.

  2. Monitorize o débito e os registos da stream de dados, bem como o débito, o atraso de dados e os registos do Dataflow para garantir que a última parte do tráfego de gravação foi processada.

  3. Inspecione a fila de mensagens rejeitadas. Determinar se não foi possível escrever documentos na base de dados de destino durante a migração e tomar uma decisão sobre se deve continuar com a migração.

Migre o tráfego de leitura para o Firestore

Depois de todos os eventos da stream de alterações pendentes serem replicados para o Firestore, ambas as bases de dados contêm exatamente os mesmos dados. Agora, pode transferir o tráfego de leitura e, em seguida, o tráfego de escrita.

Se optou por permitir o tráfego de leitura para a base de dados de origem compatível com o MongoDB no passo anterior:

  1. Transfira o tráfego de leitura.
  2. Certifique-se de que todos os serviços originalmente ligados à base de dados de origem compatível com o MongoDB foram atualizados para fazer leituras a partir da base de dados do Firestore com compatibilidade com o MongoDB.

Migre o tráfego de escrita para o Firestore

Após a conclusão do passo anterior, é seguro redirecionar o tráfego de gravação da sua aplicação diretamente para o Firestore.

Pare a pipeline de migração

A migração está agora concluída. Agora, pode parar a stream do Datastream e a tarefa do Dataflow.

Pausar a stream do Datastream:

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

Para encerrar o pipeline do Dataflow:

  1. Apresentar uma lista de todas as tarefas atuais:

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

    O resultado produz uma lista de tarefas do Dataflow.

  2. Na lista de trabalhos, encontre o valor NAME que tem a data/hora especificada na DATAFLOW_START_TIME variável de ambiente.

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

  3. Obtenha o JOB_ID correspondente. Exemplo: 2025-05-14_17_36_39-10772223470853954680.

  4. Execute o comando de esvaziamento para este ID da tarefa:

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

    Exemplo:

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

O que se segue?

Para ver sugestões de resolução de problemas, consulte o artigo Resolução de problemas de migração.