Migrar da edição Standard para a Enterprise

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 modelo firestore-to-firestore cria 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

  1. 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.

  2. 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:

  1. 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.
  2. 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:

  • 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, como 2026-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:

  • 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ção messages em /users/userid/messages, a menos que você também especifique o grupo de coleções messages.

  • 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, como 2026-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:

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:

A seguir