Para migrar dados de um banco de dados da edição Standard do Firestore para um da edição Enterprise, recomendamos usar uma das seguintes opções:
Os recursos de importação e exportação. Os arquivos de dados de uma operação de importação são compatíveis com as edições Enterprise e Standard.
O modelo Dataflow do
firestore-to-firestore. O serviço Dataflow permite criar pipelines de dados, e o modelofirestore-to-firestorecria um pipeline em lote entre bancos de dados Cloud Firestore.
A importação e a exportação são a opção mais simples para executar com menos opções de configuração.
O modelo Dataflow é mais personalizável. É possível estender o código do modelo para realizar migrações parciais ou transformar dados. Você também pode controlar a contagem e o tamanho dos workers.
As duas opções oferecem suporte a migrações entre projetos e regiões.
Migrar dados com exportação e importação
Para migrar dados com operações de exportação e importação, consulte Exportar e importar dados. Para mover dados para um banco de dados em outro projeto, consulte Mover dados entre projetos.
Migrar dados com o modelo Dataflow
Use as instruções a seguir para migrar dados com o modelo
firestore-to-firestore Dataflow.
Antes de começar
Antes de iniciar a migração de dados, verifique se a recuperação pontual (PITR) está ativada no banco de dados de origem. O job Dataflow usa a PITR para ler dados em um carimbo de data/hora da PITR. Se a PITR estiver desativada, o job vai falhar se for executado por mais de uma hora.
Atribua os papéis necessários descritos na próxima seção.
Funções exigidas
Para migrar dados de um banco de dados para outro, atribua as seguintes funções. Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos:
- Para receber as permissões necessárias para criar um banco de dados e acessar os dados do
Cloud Firestore, peça ao administrador para conceder a você o papel de
Proprietário do Cloud Datastore
(
roles/datastore.owner) do gerenciamento de identidade e acesso (IAM) no seu projeto. -
Para dar ao trabalho Dataflow acesso de leitura e gravação aos bancos de dados Cloud Firestore, atribua à conta de serviço do worker Dataflow (por exemplo,
PROJECT_NUMBER-compute@) o papel do IAM Usuário do Cloud Datastore (roles/datastore.user) no seu projeto.Para mais informações sobre a segurança do Dataflow, consulte Segurança e permissões do Dataflow.
Para mais informações sobre a concessão de papéis do IAM, consulte Gerenciar o acesso a projetos, pastas e organizações.
1. Criar um banco de dados da edição Enterprise do Firestore
Para migrar dados de um banco de dados da edição Standard para um da edição Enterprise, primeiro crie o banco de dados de destino da edição Enterprise. Consulte Criar um banco de dados.
2. Execute o modelo Dataflow firestore-to-firestore.
Configure e execute o job Dataflow com o modelo firestore-to-firestore.
Os modelos permitem migrar todo o banco de dados ou apenas grupos de coleções especificados.
Limitações
Considere as seguintes limitações para o modelo firestore-to-firestore
Dataflow:
- O banco de dados de origem precisa ser da edição Standard.
- A migração lê dados em um momento específico. Recomendamos ativar a recuperação pontual (PITR) no banco de dados de origem. Se a PITR não estiver ativada, os dados vão expirar após uma hora, e esse pode não ser um tempo suficiente para concluir a migração. A PITR estende a retenção de dados para sete dias.
- Os índices não são migrados.
O job Dataflow não migra configurações de banco de dados, como políticas de time to live (TTL), backups, PITR e chaves de criptografia gerenciadas pelo cliente (CMEK).
É necessário configurar essas opções no novo banco de dados. Para melhorar a velocidade da migração de dados, aguarde até depois da migração para configurar TTL, backups e PITR no banco de dados de destino.
Os exemplos a seguir demonstram como executar o modelo usando o Google Cloud CLI.
Migrar todos os dados
Para migrar todos os dados, use o seguinte comando:
gcloud dataflow flex-template run "JOB_NAME" \ --project "PROJECT" \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
Substitua:
JOB_NAME: um nome para o job.PROJECT: o ID do seu projeto Google Cloud.REGION_NAME: o Google Cloud local em que você quer executar o job Dataflow. Use um local próximo aos seus bancos de dados.VERSION: a versão do modelo que você quer usar. Use estes valores:latestpara usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem que contém o banco de dados da edição Standard do Firestore.SOURCE_DATABASE_ID: o ID do banco de dados Cloud Firestore de origem.DESTINATION_PROJECT_ID: o ID do projeto Google Cloud de destino para o novo banco de dados Cloud Firestore.DESTINATION_DATABASE_ID: o ID do banco de dados Cloud Firestore de destino.READ_TIME: o carimbo de data/hora para ler dados do banco de dados de origem. Definido como um carimbo de data/hora no formato RFC 3339, com granularidade de minutos, como2026-05-15T16:31:00.00Z.O primeiro carimbo de data/hora válido depende das configurações de recuperação pontual (PITR). Consulte Receber o horário da versão mais antiga.
Migrar grupos de coleções especificados
Para migrar apenas alguns grupos de coleções, use o seguinte comando:
gcloud dataflow jobs run "JOB_NAME" \ --project "PROJECT" \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
Substitua:
JOB_NAME: um nome para o job.PROJECT: o ID do seu projeto Google Cloud.REGION_NAME: o Google Cloud local em que você quer executar o job Dataflow. Use um local próximo aos seus bancos de dados.VERSION: a versão do modelo que você quer usar. Use estes valores:latestpara usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem que contém o banco de dados da edição Standard do Firestore.SOURCE_DATABASE_ID: o ID do banco de dados Cloud Firestore de origem.COLLECTION_GROUP_IDS: uma lista separada por vírgulas de IDs de grupos de coleções a serem migrados.As subcoleções não são incluídas de forma recursiva. Por exemplo, se você especificar o grupo de coleções
users, a migração não vai incluir uma subcoleçãomessagesem/users/userid/messages, a menos que você também especifique o grupo de coleçõesmessages.DESTINATION_PROJECT_ID: o ID do projeto Google Cloud de destino para o novo banco de dados Cloud Firestore.DESTINATION_DATABASE_ID: o ID do banco de dados Cloud Firestore de destino.READ_TIME: o carimbo de data/hora para ler dados do banco de dados de origem. Definido como um carimbo de data/hora no formato RFC 3339, com granularidade de minuto, como2026-05-15T16:31:00.00Z.O primeiro carimbo de data/hora válido depende das configurações de recuperação pontual (PITR). Consulte Receber o horário da versão mais antiga.
3. Configurar o banco de dados
O job firestore-to-firestore migra apenas dados.
Os índices e outras configurações do banco de dados não são migrados. Além de
migrar dados, considere configurar o seguinte no novo banco de dados:
Índices: os bancos de dados da edição Enterprise do Firestore não exigem índices para executar consultas e não criam índices automáticos por padrão. Consulte o seguinte para criar índices para suas consultas:
- Visão geral dos índices da edição Enterprise do Firestore.
- Otimize o desempenho da consulta com índices.
- Use a CLI Firebase para exportar e implantar índices no novo banco de dados.
- Use o Query Insights para identificar consultas que podem ser otimizadas com um índice.
TTL: criar políticas de TTL.
Backups: Configurar backups.
PITR: Ative a PITR.
Depois de configurar o banco de dados, continue testando o app com o novo banco de dados. Para uma migração completa, atualize seus aplicativos para usar o novo banco de dados.
Solução de problemas
Para bancos de dados grandes, o job pode falhar se ler muitos dados de uma só vez. Para solucionar isso:
Aumente o valor de
maxNumWorkers.
A seguir
- Saiba como consultar dados com operações de pipeline.
- Saiba como otimizar consultas na edição Enterprise do Firestore
- Entenda como um banco de dados da edição Enterprise é escalonado.