Von der Standard- zur Enterprise-Version migrieren

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

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

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

  • DESTINATION_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:

    • 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, 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 Cloud

  • SOURCE_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 users Sammlungsgruppe angeben, enthält die Migration keine messages Untersammlung unter /users/userid/messages , es sei denn, Sie geben auch die messages Sammlungsgruppe an.

  • DESTINATION_PROJECT_ID: die ID des Zielprojekts für die neue Datenbank.Google CloudCloud Firestore

  • DESTINATION_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:

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