Von der Standard- zur Enterprise-Version migrieren
Wenn Sie Daten aus einer Firestore Standard-Version-Datenbank in eine Firestore Enterprise-Version-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-Version kompatibel.
Die
firestore-to-firestoreDataflow-Vorlage. Mit dem Dataflow-Dienst können Sie Datenpipelines erstellen. Die Vorlagefirestore-to-firestoreerstellt eine Batchpipeline zwischen 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 Dataflow-Vorlage firestore-to-firestore 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
Firestore-Daten benötigen, bitten Sie Ihren Administrator, Ihnen die
IAM-Rolle „Cloud Datastore-Inhaber“
(
roles/datastore.owner) für Ihr Projekt zu gewähren. -
Um dem Dataflow-Job Lese- und Schreibzugriff auf Ihre Firestore-Datenbanken zu gewähren, weisen Sie dem Dataflow-Worker Dienstkonto (z. B.
PROJECT_NUMBER-compute@developer.gserviceaccount.com) die IAM-Rolle „Cloud Datastore-Nutzer“ (roles/datastore.user) für Ihr Projekt zu.Weitere Informationen zur Dataflow-Sicherheit finden Sie unter Sicherheit und Berechtigungen in Dataflow.
Weitere Informationen zum Zuweisen von IAM-Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
1. Neue Firestore Enterprise-Version-Datenbank erstellen
Wenn Sie Daten aus einer Standard-Version-Datenbank in eine Enterprise-Version-Datenbank migrieren möchten, müssen Sie zuerst die Enterprise-Version-Zieldatenbank erstellen. Weitere Informationen finden Sie unter Datenbank erstellen.
2. Dataflow-Vorlage firestore-to-firestore ausführen
Konfigurieren und führen Sie Ihren Dataflow-Job mit der Vorlage firestore-to-firestore 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 Dataflow-Vorlage firestore-to-firestore:
- Die Quelldatenbank muss eine Standard-Version-Datenbank sein.
- Bei der Migration werden Daten zu einem bestimmten Lesezeitpunkt gelesen. Wir empfehlen, die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time-Recovery, 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 Geschwindigkeit der Datenmigration zu verbessern, 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 in.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_RC00zur Verwendung einer bestimmten Version von der Vorlage. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: die ID des Quell Google Cloud projekts, das die Firestore Standard-Version-Datenbank enthält.SOURCE_DATABASE_ID: die ID der Firestore-Quelldatenbank.DESTINATION_PROJECT_ID: die ID des Ziel Google Cloud projekts für die neue Firestore-Datenbank.DESTINATION_DATABASE_ID: die ID der Firestore-Zieldatenbank.READ_TIME: der Zeitstempel, zu dem Daten aus der Quelldatenbank gelesen werden. 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 (Point-in-Time-Recovery, 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 in.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_RC00zur Verwendung einer bestimmten Version von der Vorlage. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: die ID des Quell Google Cloud projekts, das die Firestore Standard-Version-Datenbank enthält.SOURCE_DATABASE_ID: die ID der Firestore-Quelldatenbank.COLLECTION_GROUP_IDS: eine durch Kommas getrennte Liste der IDs der Sammlungsgruppen, die migriert werden sollen.Untergeordnete Sammlungen werden nicht rekursiv einbezogen. Wenn Sie beispielsweise die
usersSammlungsgruppe angeben, enthält die Migration keinemessagesuntergeordnete Sammlung unter/users/userid/messages, es sei denn, Sie geben auch diemessagesSammlungsgruppe an.DESTINATION_PROJECT_ID: die ID des Ziel Google Cloud projekts für die neue Firestore-Datenbank.DESTINATION_DATABASE_ID: die ID der Firestore-Zieldatenbank.READ_TIME: der Zeitstempel, zu dem Daten aus der Quelldatenbank gelesen werden. 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 (Point-in-Time-Recovery, 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-Version-Datenbanken sind Indexe für die Ausführung von Abfragen nicht unbedingt erforderlich. Standardmäßig werden keine automatischen Indexe erstellt. Informationen zum Erstellen von Indexen für Ihre Abfragen finden Sie unter:
- Übersicht über Firestore Enterprise-Version-Indexe.
- Abfrageleistung mit Indexen optimieren.
- Sie können die Firebase CLI verwenden, um Indexe zu exportieren und in der neuen Datenbank bereitzustellen.
- Verwenden Sie Query Insights, um Abfragen zu identifizieren, 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-Version.
- Informationen zur Skalierung einer Enterprise-Version-Datenbank.