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 modelofirestore-to-firestorecria 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
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.
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:
- 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. -
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: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 de o modelo, que pode ser encontrado aninhado na respectiva pasta pai datada na pasta— gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: o ID do projeto de origem que contém o banco de dados da edição Standard do Firestore. Google CloudSOURCE_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 CloudDESTINATION_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, como2026-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: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 de o modelo, que pode ser encontrado aninhado na respectiva pasta pai datada na pasta— gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: o ID do projeto de origem que contém o banco de dados da edição Standard do Firestore. Google CloudSOURCE_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çãomessagesem/users/userid/messages, a menos que você também especifique o grupo de coleçõesmessages.DESTINATION_PROJECT_ID: o ID do projeto de destino do novo banco de dados do Firestore. Google CloudDESTINATION_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, como2026-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:
Í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 do índice da edição Enterprise do Firestore.
- Otimizar o desempenho da consulta com índices.
- É possível usar a CLI do Firebase para exportar índices e implantá-los no novo banco de dados.
- Use Query Insights para identificar consultas que podem ser otimizadas com um índice.
TTL: criar políticas de TTL.
Backups: configurar backups.
PITR: ativar a PITR.
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:
Aumente o
maxNumWorkersvalor.
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.