Migrar da edição Standard para a Enterprise

Para migrar dados de um banco de dados da edição Standard do Firestore para um banco de dados da edição Enterprise do Firestore, 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 do Dataflow firestore-to-firestore. O serviço do Dataflow permite criar pipelines de dados, e o modelo firestore-to-firestore cria um pipeline em lote entre bancos de dados do Firestore.

A importação e exportação é a opção mais simples de executar com menos opções de configuração.

O modelo do Dataflow é mais personalizável. É possível estender o código do modelo para realizar migrações parciais ou transformar dados. Também é possível 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 do Dataflow

Use as instruções a seguir para migrar dados com o modelo do Dataflow firestore-to-firestore.

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 do Dataflow usa a PITR para ler dados em um carimbo de data/hora da PITR. Se a PITR estiver desativada, o job 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 os seguintes papéis. Também é possível receber as permissões necessárias usando papéis personalizados ou outros papéis predefinidos:

  1. Para receber as permissões necessárias para criar um novo banco de dados e acessar os dados do Firestore, peça ao administrador para conceder a você o papel de Proprietário do Cloud Datastore (roles/datastore.owner) do Identity and Access Management (IAM) no seu projeto.
  2. Para conceder ao job do Dataflow acesso de leitura e gravação aos bancos de dados do Firestore, atribua à conta de serviço do worker do Dataflow (por exemplo, PROJECT_NUMBER-compute@developer.gserviceaccount.com) o papel de usuário do Cloud Datastore (roles/datastore.user) do IAM no seu projeto.

    Para mais informações sobre a segurança do Dataflow, consulte Segurança e permissões do Dataflow.

Para saber mais 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 banco de dados da edição Enterprise, primeiro crie o banco de dados de destino da edição Enterprise. Consulte Criar um banco de dados.

2. Executar o modelo firestore-to-firestore do Dataflow

Configure e execute o job do Dataflow com o modelo firestore-to-firestore. Os modelos oferecem suporte à migração de todo o banco de dados ou apenas grupos de coleções especificados.

Limitações

Considere as seguintes limitações para o modelo do Dataflow firestore-to-firestore:

  • O banco de dados de origem precisa ser da edição Standard.
  • A migração lê dados em um tempo de leitura específico. Sugerimos 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 tempo pode não ser suficiente para concluir a migração de dados. A PITR estende a retenção de dados para sete dias.
  • Os índices não são migrados.
  • O job do 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 definições no novo banco de dados. Para melhorar a velocidade da migração de dados, aguarde até depois da migração para configurar o TTL, os backups e a PITR no banco de dados de destino.

Os exemplos a seguir demonstram como executar o modelo usando a Google Cloud CLI.

Migrar todos os dados

Para migrar todos os dados, use o comando a seguir:

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 Google Cloud projeto.
  • REGION_NAME: o Google Cloud local em que você quer executar o job do 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 de origem que contém o banco de dados da edição Standard do Firestore. Google Cloud

  • SOURCE_DATABASE_ID: o ID do banco de dados de origem do Firestore.

  • DESTINATION_PROJECT_ID: o ID do projeto de destino do novo banco de dados do Firestore. Google Cloud

  • DESTINATION_DATABASE_ID: o ID do banco de dados de destino do Firestore.

  • READ_TIME: o carimbo de data/hora para ler dados do banco de dados de origem. Defina um carimbo de data/hora no formato RFC 3339, com granularidade de minutos, como 2026-05-15T16:31:00.00Z.

    O carimbo de data/hora válido mais antigo 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 determinados grupos de coleções, use o comando a seguir:

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 Google Cloud projeto.
  • REGION_NAME: o Google Cloud local em que você quer executar o job do 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 de origem que contém o banco de dados da edição Standard do Firestore. Google Cloud

  • SOURCE_DATABASE_ID: o ID do banco de dados de origem do Firestore.

  • 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 recursivamente. 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 de destino do novo banco de dados do Firestore. Google Cloud

  • DESTINATION_DATABASE_ID: o ID do banco de dados de destino do Firestore.

  • READ_TIME: o carimbo de data/hora para ler dados do banco de dados de origem. Defina um carimbo de data/hora no formato RFC 3339, com granularidade de minutos, como 2026-05-15T16:31:00.00Z.

    O carimbo de data/hora válido mais antigo 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 de 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, você pode continuar 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 poderá falhar se ler muitos dados de uma só vez. Para solucionar isso:

A seguir