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-firestore Dataflow-Vorlage. Mit dem Dataflow-Dienst können Sie Datenpipelines erstellen. Die Vorlage firestore-to-firestore erstellt 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

  1. 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.

  2. 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:

  1. 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.
  2. 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:

    • latest zur 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 zur 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:

    • latest zur 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 zur 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 users Sammlungsgruppe angeben, enthält die Migration keine messages untergeordnete Sammlung unter /users/userid/messages , es sei denn, Sie geben auch die messages Sammlungsgruppe 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:

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

Nächste Schritte