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:
- 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.
- Determine quando é apropriado encerrar o tráfego de gravação na base de dados de origem.
- 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.
- 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:
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:
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:
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.
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.
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.
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:
- Transfira o tráfego de leitura.
- 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:
Apresentar uma lista de todas as tarefas atuais:
gcloud dataflow jobs list --region="$LOCATION"
O resultado produz uma lista de tarefas do Dataflow.
Na lista de trabalhos, encontre o valor
NAME
que tem a data/hora especificada naDATAFLOW_START_TIME
variável de ambiente.Formato:
dataflow-mongodb-to-firestore-DATAFLOW_START_TIME
. Exemplo:dataflow-mongodb-to-firestore-20250514173638
.Obtenha o
JOB_ID
correspondente. Exemplo:2025-05-14_17_36_39-10772223470853954680
.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.