CDC-Tabelle in eine andere Region migrieren

Auf dieser Seite werden Best Practices für einen Anwendungsfall beschrieben, bei dem Sie die Datastream-Replikation zu BigQuery eingerichtet, das Ziel-Dataset aber in einer falschen Region konfiguriert haben. Anschließend möchten Sie das Dataset in eine andere Region (oder mehrere Regionen) verschieben, ohne alle Daten aus der Quelldatenbank noch einmal in BigQuery synchronisieren zu müssen.

Hinweise

Bevor Sie mit der Migration Ihrer Daten in eine andere Region beginnen, sollten Sie Folgendes berücksichtigen:

  • Die Migration dauert einige Zeit und Sie müssen den Stream während des Vorgangs vorübergehend pausieren. Um die Datenintegrität aufrechtzuerhalten, muss die Quelldatenbank die Änderungslogs beibehalten, wenn der Stream pausiert wird. Wenn Sie schätzen möchten, wie lange der Stream pausiert werden soll, kombinieren Sie den Wert von max_staleness im Dataset mit dem am längsten laufenden Zusammenführungsvorgang:
    • Informationen dazu, wie lange es dauern kann, bis Zusammenführungsvorgänge abgeschlossen sind, finden Sie unter Empfohlener Wert für max_staleness in der Tabelle.
    • Informationen zum Ermitteln des maximalen max_staleness-Werts im Dataset finden Sie unter Aktuellen max_staleness-Wert einer Tabelle ermitteln. Passen Sie die Abfrage an Ihre spezifischen Anforderungen an.
    • Wenn die geschätzte Pause zu lang ist, um von der Quelldatenbank unterstützt zu werden, sollten Sie den Wert von max_staleness für die Tabellen im Dataset möglicherweise vorübergehend reduzieren.
  • Prüfen Sie, ob der Nutzer, der die Migration durchführt, über genügend BigQuery-Ressourcen in der Zielregion (Abfragereservierung und Hintergrundreservierung) verfügt. Weitere Informationen zu Reservierungen finden Sie unter Reservierungszuweisungen.
  • Prüfen Sie, ob der Nutzer, der die Migration ausführt, ausreichende Berechtigungen zum Ausführen dieses Vorgangs hat, z. B. IAM-Steuerelemente oder VPC Service Controls.

Migrationsschritte

Verwenden Sie zum Initiieren der Dataset-Migration die BigQuery-Datenreplikation:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery Studio.

    Zu BigQuery Studio

  2. Erstellen Sie ein BigQuery-Dataset-Replikat in der neuen Region:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    Ersetzen Sie Folgendes:

    • DATASET_NAME: der Name des Datasets, das Sie erstellen möchten.
    • NEW_REGION: Der Name der Region, in der Sie das Dataset erstellen möchten. Beispiel: region-us.
  3. Überwachen Sie den Migrationsfortschritt und warten Sie, bis das Kopierwasserzeichen im Replikat innerhalb weniger Minuten von der primären Instanz abweicht. Sie können diese Abfrage für BigQuery INFORMATION_SCHIEDS ausführen, um den Migrationsfortschritt zu prüfen:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATASET_NAME: der Name Ihres Datasets.
    • DATASET_REPLICA_STALENESS: die Konfiguration der Veralterung der Tabellen im von Ihnen erstellten Dataset-Replikat.
    • NEW_REGION: Region, in der Sie das Dataset erstellt haben.
  4. Pausieren Sie den vorhandenen Datastream-Stream. Weitere Informationen finden Sie unter Stream pausieren.

  5. Warten Sie, bis der Stream per Drain beendet wurde, und notieren Sie sich die Zeit, zu der der Stream in den Status PAUSED gewechselt hat.

  6. Prüfen Sie, ob die neuesten CDC-Änderungen auf die BigQuery-Tabelle angewendet wurden. Prüfen Sie dazu das upsert_stream_apply_watermark für die Tabelle. Führen Sie die folgende Abfrage aus und achten Sie darauf, dass der Zeitstempel des Wasserzeichens 10 Minuten später liegt, als der Stream pausiert wurde:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Wenn Sie die Abfrage nur für eine bestimmte Tabelle ausführen möchten, fügen Sie die folgende WHERE-Klausel hinzu:

    WHERE table_name = 'TABLE_NAME'
    

    Ersetzen Sie Folgendes:

    • DATASET_NAME: der Name Ihres Datasets.
    • TABLE_NAME: Optional. Die Tabelle, deren upsert_stream_apply_watermark Sie prüfen möchten.
  7. Verwenden Sie die Abfrage aus Schritt 3, um zu prüfen, ob das neue Wasserzeichen für die Regionskopie nach dem in Schritt 6 erfassten upsert_stream_apply_watermark liegt.

  8. Optional können Sie manuell mehrere Tabellen im primären Dataset in der ursprünglichen Region mit dem Replikat in der neuen Region vergleichen, um zu überprüfen, ob alle Daten korrekt kopiert wurden.

  9. Stufen Sie das BigQuery-Dataset-Replikat hoch. Führen Sie dazu in BigQuery Studio den folgenden Befehl aus:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    Ersetzen Sie Folgendes:

    • DATASET_NAME: der Name Ihres Datasets.
    • NEW_REGION: Region, in der Sie das Dataset erstellt haben.
  10. Wenn Sie das ursprüngliche Dataset (jetzt das Replikat) nicht mehr benötigen und keine zusätzlichen Kosten verursachen möchten, können Sie das ursprüngliche BigQuery-Dataset in BigQuery Studio löschen:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Ersetzen Sie Folgendes:

    • DATASET_NAME: der Name des ursprünglichen Datasets.
    • ORIGINAL_REGION: Region des ursprünglichen Datasets.
  11. Erstellen Sie einen neuen Stream mit derselben Konfiguration, aber mit einem neuen BigQuery-Zielspeicherort.

  12. Starte den neuen Stream.

    Damit doppelte Ereignisse nicht wiederholt werden, starten Sie den Stream ab einer bestimmten Position:

    • Für MySQL- und Oracle-Quellen: Sie können die Logposition ermitteln, indem Sie die Logs des ursprünglichen Streams untersuchen und die letzte Position ermitteln, aus der der Stream erfolgreich gelesen wurde. Informationen dazu, wie Sie einen Stream ab einer bestimmten Position starten, finden Sie unter Streams verwalten.
    • Für PostgreSQL-Quellen: Der neue Stream beginnt mit dem Lesen von Änderungen ab der ersten Logsequenznummer (LSN) im Replikationsslot. Da der ursprüngliche Stream möglicherweise bereits einige dieser Änderungen verarbeitet hat, ändern Sie den Zeiger des Replikationsslots manuell auf die letzte LSN, aus der Datastream gelesen hat. Sie finden dieses LSN in den Datastream-Nutzerlogs.
  13. Optional: Löschen Sie den ursprünglichen Stream.