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-Version kompatibel.

  • Die firestore-to-firestore-Vorlage Dataflow. Mit dem Dataflow-Dienst können Sie Datenpipelines erstellen. Mit der firestore-to-firestore-Vorlage wird eine Batchpipeline zwischen Cloud Firestore-Datenbanken erstellt.

Der Import und Export ist die einfachere Option, da weniger Konfigurationsoptionen erforderlich sind.

Die Vorlage Dataflow bietet mehr Anpassungsmöglichkeiten. 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 zwischen Projekten und Regionen.

Daten durch Exportieren und Importieren 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 Vorlage Dataflow migrieren

Folgen Sie der Anleitung unten, um Daten mit der Vorlage firestore-to-firestore Dataflow zu migrieren.

Hinweis

  1. Bevor Sie die Datenmigration starten, muss die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time Recovery, PITR) für die Quelldatenbank aktiviert sein. Beim Dataflow-Job werden Daten zu einem PITR-Zeitstempel (Point-in-Time Recovery) gelesen. Wenn PITR deaktiviert ist, schlägt der Job fehl, wenn er länger als eine Stunde ausgeführt wird.

  2. Die datastore.googleapis.com API muss aktiviert sein, um diese Vorlage verwenden zu können.

  3. 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 IAM-Rolle Cloud Datastore-Inhaber (roles/datastore.owner) für Ihr Projekt zu gewähren.
  2. Damit der Dataflow-Job Lese- und Schreibzugriff auf Ihre Cloud Firestore-Datenbanken hat, weisen Sie dem Dataflow-Worker-Dienstkonto (z. B. PROJECT_NUMBER-compute@) die IAM-Rolle Cloud Datastore-Nutzer (roles/datastore.user) für Ihr Projekt zu.

    Weitere Informationen zur Sicherheit von Dataflow 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-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. Führen Sie die Vorlage Dataflow firestore-to-firestore aus.

Konfigurieren Sie Ihren Dataflow-Job mit der Vorlage firestore-to-firestore und führen Sie ihn aus. Die Vorlagen unterstützen die Migration der gesamten Datenbank oder nur bestimmter Sammlungsgruppen.

Beschränkungen

Beachten Sie die folgenden Einschränkungen für die Vorlage firestore-to-firestore Dataflow:

  • Die Quelldatenbank muss eine Datenbank der Standard Edition sein.
  • Bei der Migration werden Daten zu einem bestimmten Zeitpunkt gelesen. Wir empfehlen, die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time-Recovery, PITR) in der Quelldatenbank zu aktivieren. Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt nicht aktiviert ist, laufen die Daten nach einer Stunde ab. Das ist möglicherweise nicht genug Zeit, um die Datenmigration abzuschließen. Mit der Wiederherstellung zu einem bestimmten Zeitpunkt wird die Datenaufbewahrung auf sieben Tage verlängert.
  • Indexe werden nicht migriert.
  • Mit dem Dataflow-Job werden keine Datenbankkonfigurationen wie TTL-Richtlinien (Time-to-Live), Sicherungen, PITR und vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) migriert.

    Sie müssen diese Einstellungen in der neuen Datenbank konfigurieren. Um die Datenmigration zu beschleunigen, sollten Sie die TTL, Sicherungen und PITR in der Zieldatenbank erst nach der Migration konfigurieren.

Die folgenden Beispiele zeigen, wie Sie die Vorlage mit 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, der sich in der Nähe Ihrer Datenbanken befindet.
  • 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 zur Verwendung einer bestimmten Version der Vorlage. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
  • SOURCE_PROJECT_ID: die ID des Google Cloud-Quellprojekts, das die Firestore Standard Edition-Datenbank enthält.

  • SOURCE_DATABASE_ID: Die ID der Cloud Firestore-Quelldatenbank.

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

  • DESTINATION_DATABASE_ID: die ID der Cloud Firestore-Zieldatenbank.

  • READ_TIME: Der Zeitstempel, ab dem Daten aus der Quelldatenbank gelesen werden sollen. Auf einen Zeitstempel im RFC 3339-Format mit einer Granularität von einer Minute festgelegt, 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 ab. Zeitstempel der ältesten Version abrufen

Angegebene Sammlungsgruppen migrieren

Wenn Sie nur bestimmte Sammlungsgruppen migrieren möchten, verwenden Sie den folgenden Befehl:

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, der sich in der Nähe Ihrer Datenbanken befindet.
  • 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 zur Verwendung einer bestimmten Version der Vorlage. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
  • SOURCE_PROJECT_ID: die ID des Google Cloud-Quellprojekts, das die Firestore Standard Edition-Datenbank enthält.

  • SOURCE_DATABASE_ID: Die ID der Cloud Firestore-Quelldatenbank.

  • COLLECTION_GROUP_IDS: Eine durch Kommas getrennte Liste der zu migrierenden Sammlungsgruppen-IDs.

    Untersammlungen werden nicht rekursiv einbezogen. Wenn Sie beispielsweise die Sammlungsgruppe users angeben, wird bei der Migration keine Untersammlung messages unter /users/userid/messages berücksichtigt, sofern Sie nicht auch die Sammlungsgruppe messages angeben.

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

  • DESTINATION_DATABASE_ID: die ID der Cloud Firestore-Zieldatenbank.

  • READ_TIME: Der Zeitstempel, ab 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 ab. Zeitstempel der ältesten Version abrufen

3. Datenbank konfigurieren

Mit dem firestore-to-firestore-Job werden nur Daten migriert. Indexe und andere Datenbankeinstellungen werden nicht migriert. Neben der Migration von Daten sollten Sie auch die folgenden Einstellungen in der neuen Datenbank konfigurieren:

Nachdem Sie die Datenbank konfiguriert haben, können Sie Ihre App mit der neuen Datenbank 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