Migrer de l'édition Standard vers l'édition Enterprise
Pour migrer des données d'une base de données Firestore édition Standard vers une base de données Firestore édition Enterprise, nous vous recommandons d'utiliser l'une des options suivantes :
Les fonctionnalités d'importation et d'exportation. Les fichiers de données d'une opération d'importation sont compatibles avec les éditions Enterprise et Standard.
Le modèle Dataflow
firestore-to-firestore. Le service Dataflow vous permet de créer des pipelines de données. Le modèlefirestore-to-firestorecrée un pipeline par lot entre les bases de données Firestore.
L'importation et l'exportation sont l'option la plus simple à exécuter, avec moins d'options de configuration.
Le modèle Dataflow est plus personnalisable. Vous pouvez étendre le code du modèle pour effectuer des migrations partielles ou transformer des données. Vous pouvez également contrôler le nombre et la taille des nœuds de calcul.
Les deux options permettent les migrations entre projets et régions.
Migrer des données avec l'exportation et l'importation
Pour migrer des données à l'aide d'opérations d'exportation et d'importation, consultez Exporter et importer des données. Pour déplacer des données vers une base de données dans un autre projet, consultez Déplacer des données entre projets.
Migrer des données avec le modèle Dataflow
Suivez les instructions ci-dessous pour migrer des données avec le modèle Dataflow firestore-to-firestore.
Avant de commencer
Avant de commencer la migration des données, assurez-vous que la récupération à un moment précis (PITR) est activée sur la base de données source. Le job Dataflow utilise la récupération à un moment précis pour lire les données à un code temporel de récupération à un moment précis. Si la récupération à un instant donné est désactivée, le job échoue s'il s'exécute pendant plus d'une heure.
Attribuez les rôles requis décrits dans la section suivante.
Rôles requis
Pour migrer des données d'une base de données à une autre, attribuez les rôles suivants. Vous pouvez également obtenir les autorisations requises grâce aux rôles personnalisés ou à d'autres rôles prédéfinis :
- Pour obtenir les autorisations nécessaires pour créer une base de données et accéder aux données Firestore, demandez à votre administrateur de vous accorder le rôle IAM (Identity and Access Management) Propriétaire Cloud Datastore (
roles/datastore.owner) sur votre projet. -
Pour accorder au job Dataflow un accès en lecture et en écriture à vos bases de données Firestore, attribuez au compte de service de nœud de calcul Dataflow (par exemple,
PROJECT_NUMBER-compute@developer.gserviceaccount.com) le rôle IAM Utilisateur Cloud Datastore (roles/datastore.user) dans votre projet.Pour en savoir plus sur la sécurité Dataflow, consultez Sécurité et autorisations Dataflow.
Pour en savoir plus sur l'attribution de rôles IAM, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
1. Créer une base de données Firestore Enterprise Edition
Pour migrer des données d'une base de données de l'édition Standard vers une base de données de l'édition Enterprise, vous devez d'abord créer la base de données de destination de l'édition Enterprise. Consultez Créer une base de données.
2. Exécuter le modèle Dataflow firestore-to-firestore
Configurez et exécutez votre job Dataflow avec le modèle firestore-to-firestore.
Les modèles permettent de migrer l'intégralité de la base de données ou uniquement les groupes de collections spécifiés.
Limites
Tenez compte des limites suivantes pour le modèle Dataflow firestore-to-firestore :
- La base de données source doit être une base de données de l'édition Standard.
- La migration lit les données à un moment précis. Nous vous suggérons d'activer la récupération à un moment précis (PITR) dans la base de données source. Si la récupération à un instant donné n'est pas activée, les données expirent au bout d'une heure, ce qui peut ne pas être suffisant pour que la migration des données soit terminée. La récupération à un moment précis étend la conservation des données à sept jours.
- Les index ne sont pas migrés.
Le job Dataflow ne migre pas les configurations de base de données telles que les stratégies de valeur TTL (Time To Live), les sauvegardes, la récupération à un instant donné et les clés de chiffrement gérées par le client (CMEK).
Vous devez configurer ces paramètres dans la nouvelle base de données. Pour accélérer la migration des données, attendez la fin de la migration pour configurer la TTL, les sauvegardes et la récupération à un instant donné sur la base de données de destination.
Les exemples suivants montrent comment exécuter le modèle à l'aide de Google Cloud CLI.
Transférer toutes les données
Pour migrer toutes les données, utilisez la commande suivante :
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"
Remplacez les éléments suivants :
JOB_NAME: nom du job.PROJECT: ID de votre projet Google Cloud .REGION_NAME: Google Cloud emplacement dans lequel vous souhaitez exécuter la tâche Dataflow. Utilisez un emplacement proche de vos bases de données.VERSION: version du modèle que vous souhaitez utiliser. Vous pouvez utiliser les valeurs suivantes :latestpour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket : gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: ID du projet source Google Cloud contenant la base de données Firestore édition Standard.SOURCE_DATABASE_ID: ID de la base de données Firestore source.DESTINATION_PROJECT_ID: ID du projet Google Cloud de destination pour la nouvelle base de données Firestore.DESTINATION_DATABASE_ID: ID de la base de données Firestore de destination.READ_TIME: code temporel à partir duquel lire les données de la base de données source. Définissez un code temporel au format RFC 3339, avec une précision à la minute près, par exemple2026-05-15T16:31:00.00Z.Le premier code temporel valide dépend de vos paramètres de récupération à un moment précis (PITR). Consultez Obtenir la date de la version la plus ancienne.
Migrer des groupes de collections spécifiques
Pour migrer uniquement certains groupes de collections, utilisez la commande suivante :
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"
Remplacez les éléments suivants :
JOB_NAME: nom du job.PROJECT: ID de votre projet Google Cloud .REGION_NAME: Google Cloud emplacement dans lequel vous souhaitez exécuter la tâche Dataflow. Utilisez un emplacement proche de vos bases de données.VERSION: version du modèle que vous souhaitez utiliser. Vous pouvez utiliser les valeurs suivantes :latestpour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket : gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: ID du projet Google Cloud source contenant la base de données Firestore édition Standard.SOURCE_DATABASE_ID: ID de la base de données Firestore source.COLLECTION_GROUP_IDS: liste des ID de groupe de collections à migrer, séparés par une virgule.Les sous-collections ne sont pas incluses de manière récursive. Par exemple, si vous spécifiez le groupe de collections
users, la migration n'inclura pas de sous-collectionmessagesà/users/userid/messages, sauf si vous spécifiez également le groupe de collectionsmessages.DESTINATION_PROJECT_ID: ID du projet Google Cloud de destination pour la nouvelle base de données Firestore.DESTINATION_DATABASE_ID: ID de la base de données Firestore de destination.READ_TIME: code temporel permettant de lire les données de la base de données source. Définissez un code temporel au format RFC 3339, avec une précision à la minute près, par exemple2026-05-15T16:31:00.00Z.Le premier code temporel valide dépend de vos paramètres de récupération à un moment précis (PITR). Consultez Obtenir la date de la version la plus ancienne.
3. Configurer la base de données
Le job firestore-to-firestore ne migre que les données.
Les index et les autres paramètres de base de données ne sont pas migrés. En plus de migrer les données, pensez à configurer les éléments suivants dans la nouvelle base de données :
Index : les bases de données Firestore Enterprise Edition n'ont pas besoin d'index pour exécuter des requêtes et ne créent pas d'index automatiques par défaut. Pour créer des index pour vos requêtes, consultez les articles suivants :
- Présentation des index de l'édition Enterprise de Firestore
- Optimisez les performances des requêtes avec des index.
- Vous pouvez utiliser la CLI Firebase pour exporter des index et les déployer dans la nouvelle base de données.
- Utilisez Insights sur les requêtes pour identifier les requêtes que vous pouvez optimiser avec un index.
TTL : créer des règles TTL.
Sauvegardes : configurer les sauvegardes
Récupération PITR : Activez la récupération PITR.
Après avoir configuré votre base de données, vous pouvez continuer à tester votre application avec la nouvelle base de données. Pour une migration complète, mettez à jour vos applications afin qu'elles utilisent la nouvelle base de données.
Dépannage
Pour les bases de données volumineuses, le job peut échouer s'il lit trop de données à la fois. Pour résoudre le problème :
Augmentez la valeur
maxNumWorkers.
Étapes suivantes
- Découvrez comment interroger des données avec les opérations de pipeline.
- Découvrez comment optimiser les requêtes dans l'édition Enterprise de Firestore.
- Découvrez comment mettre à l'échelle une base de données Enterprise Edition.