Wenn Sie Daten aus einer Firestore Standard-Edition-Datenbank in eine Firestore Enterprise-Edition-Datenbank migrieren möchten, empfehlen wir eine der folgenden Optionen:
Die Import- und Exportfunktionen. Die Datendateien aus einem Importvorgang sind sowohl mit der Enterprise- als auch mit der Standard-Edition kompatibel.
Die
firestore-to-firestoreDataflow Vorlage. Mit dem Dataflow Dienst können Sie Datenpipelines erstellen. Diefirestore-to-firestoreVorlage erstellt eine Batchpipeline zwischen Cloud Firestore Datenbanken.
Importieren und Exportieren ist die einfachere Option mit weniger Konfigurationsmöglichkeiten.
Die Dataflow Vorlage ist anpassbarer. Sie können den Vorlagencode erweitern, um Teilmigrationen durchzuführen oder Daten zu transformieren. Sie können auch die Anzahl und Größe der Worker steuern.
Beide Optionen unterstützen Migrationen über Projekte und Regionen hinweg.
Daten mit Export und Import migrieren
Informationen zum Migrieren von Daten mit Export- und Importvorgängen finden Sie unter Daten exportieren und importieren. Informationen zum Verschieben von Daten in eine Datenbank in einem anderen Projekt finden Sie unter Daten zwischen Projekten verschieben.
Daten mit der Dataflow Vorlage migrieren
Folgen Sie der Anleitung, um Daten mit der
firestore-to-firestore Dataflow Vorlage zu migrieren.
Hinweis
Bevor Sie mit der Datenmigration beginnen, muss die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time-Recovery, PITR) in der Quelldatenbank aktiviert sein. Der Dataflow Job verwendet PITR, um Daten mit einem PITR Zeitstempel zu lesen. Wenn PITR deaktiviert ist, schlägt der Job fehl, wenn er länger als eine Stunde ausgeführt wird.
Weisen Sie die im nächsten Abschnitt beschriebenen erforderlichen Rollen zu.
Erforderliche Rollen
Weisen Sie die folgenden Rollen zu, um Daten von einer Datenbank in eine andere zu migrieren. Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten:
- Um die Berechtigungen zu erhalten, die Sie zum Erstellen einer neuen Datenbank und zum Zugriff auf
Cloud Firestore Daten benötigen, bitten Sie Ihren Administrator, Ihnen die
Cloud Datastore-Inhaber
(
roles/datastore.owner) IAM-Rolle für Ihr Projekt zu gewähren. -
Um dem Dataflow Job Lese- und Schreibzugriff auf Ihre Cloud Firestore Datenbanken zu gewähren, weisen Sie dem Dataflow Worker Dienstkonto (z. B.
PROJECT_NUMBER-compute@) die Cloud Datastore-Nutzer (roles/datastore.user) IAM-Rolle für Ihr Projekt zu.Weitere Informationen zur Dataflow Sicherheit finden Sie unter Dataflow Sicherheit und Berechtigungen.
Informationen zum Zuweisen von Rollen, siehe Zugriff auf Projekte, Ordner und Organisationen verwalten.
1. Neue Firestore Enterprise-Edition-Datenbank erstellen
Wenn Sie Daten aus einer Standard-Edition-Datenbank in eine Enterprise-Edition-Datenbank migrieren möchten, müssen Sie zuerst die Enterprise-Edition-Zieldatenbank erstellen. Weitere Informationen finden Sie unter Datenbank erstellen.
2. Vorlage Dataflow firestore-to-firestore ausführen
Konfigurieren und führen Sie Ihren Dataflow Job mit der firestore-to-firestore Vorlage aus.
Die Vorlage unterstützt die Migration der gesamten Datenbank oder nur bestimmter Sammlungsgruppen.
Beschränkungen
Beachten Sie die folgenden Einschränkungen für die firestore-to-firestore
Dataflow Vorlage:
- Die Quelldatenbank muss eine Standard-Edition-Datenbank sein.
- Bei der Migration werden Daten zu einem bestimmten Lesezeitpunkt gelesen. Wir empfehlen, die Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) in der Quelldatenbank zu aktivieren. Wenn PITR nicht aktiviert ist, laufen die Daten nach einer Stunde ab. Das ist möglicherweise nicht genug Zeit, um die Datenmigration abzuschließen. Mit PITR wird die Aufbewahrungsdauer für Daten auf sieben Tage verlängert.
- Indexe werden nicht migriert.
Der Dataflow Job migriert keine Datenbankkonfigurationen wie TTL-Richtlinien (Time-to-Live), Sicherungen, PITR und vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK).
Sie müssen diese Einstellungen in der neuen Datenbank konfigurieren. Um die Datenmigration zu beschleunigen, sollten Sie mit der Konfiguration von TTL, Sicherungen und PITR in der Zieldatenbank warten, bis die Migration abgeschlossen ist.
In den folgenden Beispielen wird gezeigt, wie Sie die Vorlage mit der Google Cloud CLI ausführen.
Alle Daten migrieren
Verwenden Sie den folgenden Befehl, um alle Daten zu migrieren:
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"
Ersetzen Sie Folgendes:
JOB_NAME: ein Name für den Job.PROJECT: die ID Ihres Google Cloud Projekts.REGION_NAME: der Google Cloud Standort an dem Sie den Dataflow Job ausführen möchten. Verwenden Sie einen Standort in der Nähe Ihrer Datenbanken.VERSION: die Version der Vorlage, die Sie verwenden möchten. Sie können die folgenden Werte verwenden:latestzur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: die ID des QuellGoogle Cloud projekts, das die Firestore Standard-Edition-Datenbank enthält.SOURCE_DATABASE_ID: die ID der Quelldatenbank Cloud Firestore.DESTINATION_PROJECT_ID: die ID des Zielprojekts für die neue Datenbank.Google CloudCloud FirestoreDESTINATION_DATABASE_ID: die ID der ZielCloud Firestore Datenbank.READ_TIME: der Zeitstempel, zu dem Daten aus der Quelldatenbank gelesen werden sollen. Legen Sie einen Zeitstempel im RFC 3339-Format mit einer Genauigkeit von einer Minute fest, z. B.2026-05-15T16:31:00.00Z.Der früheste gültige Zeitstempel hängt von Ihren Einstellungen für die Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) ab. Weitere Informationen finden Sie unter Früheste Version abrufen.
Bestimmte Sammlungsgruppen migrieren
Verwenden Sie den folgenden Befehl, um nur bestimmte Sammlungsgruppen zu migrieren:
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"
Ersetzen Sie Folgendes:
JOB_NAME: ein Name für den Job.PROJECT: die ID Ihres Google Cloud Projekts.REGION_NAME: der Google Cloud Standort an dem Sie den Dataflow Job ausführen möchten. Verwenden Sie einen Standort in der Nähe Ihrer Datenbanken.VERSION: die Version der Vorlage, die Sie verwenden möchten. Sie können die folgenden Werte verwenden:latestzur Verwendung der neuesten Version der Vorlage, die in dem nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00, um eine bestimmte Version von der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: die ID des Quellprojekts, das die Firestore Standard-Edition-Datenbank enthält.Google CloudSOURCE_DATABASE_ID: die ID der Quelldatenbank Cloud Firestore.COLLECTION_GROUP_IDS: eine durch Kommas getrennte Liste der IDs der zu migrierenden Sammlungsgruppen.Untersammlungen werden nicht rekursiv einbezogen. Wenn Sie beispielsweise die
usersSammlungsgruppe angeben, enthält die Migration keinemessagesUntersammlung unter/users/userid/messages, es sei denn, Sie geben auch diemessagesSammlungsgruppe an.DESTINATION_PROJECT_ID: die ID des Zielprojekts für die neue Datenbank.Google CloudCloud FirestoreDESTINATION_DATABASE_ID: die ID der ZielCloud Firestore Datenbank.READ_TIME: der Zeitstempel, zu dem Daten aus der Quelldatenbank gelesen werden sollen. Legen Sie einen Zeitstempel im RFC 3339-Format mit einer Genauigkeit von einer Minute fest, z. B.2026-05-15T16:31:00.00Z.Der früheste gültige Zeitstempel hängt von Ihren Einstellungen für die Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) ab. Weitere Informationen finden Sie unter Früheste Version abrufen.
3. Datenbank konfigurieren
Der Job firestore-to-firestore migriert nur Daten.
Indexe und andere Datenbankeinstellungen werden nicht migriert. Neben der Migration von Daten sollten Sie in der neuen Datenbank Folgendes konfigurieren:
Indexe: Für Firestore Enterprise-Edition-Datenbanken sind Indexe nicht unbedingt erforderlich, um Abfragen auszuführen. Standardmäßig werden keine automatischen Indexe erstellt. Informationen zum Erstellen von Indexen für Ihre Abfragen finden Sie unter:
- Übersicht über Firestore Enterprise-Edition-Indexe.
- Abfrageleistung mit Indexen optimieren.
- Mit der Firebase CLI können Sie Indexe exportieren und in der neuen Datenbank bereitstellen.
- Mit Abfragestatistiken können Sie Abfragen ermitteln, die Sie mit einem Index optimieren können.
Sicherungen: Sicherungen einrichten.
PITR: PITR aktivieren.
Nachdem Sie Ihre Datenbank konfiguriert haben, können Sie Ihre App mit der neuen Datenbank weiter testen. Für eine vollständige Migration müssen Sie Ihre Anwendungen so aktualisieren, dass sie die neue Datenbank verwenden.
Fehlerbehebung
Bei großen Datenbanken kann der Job fehlschlagen, wenn zu viele Daten gleichzeitig gelesen werden. Um dies zu beheben können Sie
den
maxNumWorkersWert erhöhen.
Nächste Schritte
- Informationen zum Abfragen von Daten mit Pipelinevorgängen.
- Informationen zum Optimieren von Abfragen in Firestore Enterprise-Edition.
- Informationen zur Skalierung einer Enterprise-Edition-Datenbank.