Auf dieser Seite werden Best Practices für einen Anwendungsfall beschrieben, in dem Sie die Datastream-Replikation nach BigQuery eingerichtet, aber den Zieldatensatz in einer falschen Region konfiguriert haben. Sie möchten das Dataset dann in eine andere Region (oder mehrere Regionen) verschieben, ohne alle Daten aus der Quelldatenbank noch einmal mit BigQuery zu synchronisieren.
Hinweis
Beachten Sie die folgenden Punkte, bevor Sie mit der Migration Ihrer Daten in eine andere Region beginnen:
- Die Migration dauert einige Zeit und Sie müssen den Stream während des Vorgangs vorübergehend pausieren. Um die Datenintegrität zu wahren, müssen die Änderungsprotokolle in der Quelldatenbank beibehalten werden, wenn der Stream pausiert wird. Um abzuschätzen, wie lange der Stream pausiert werden soll, kombinieren Sie den Wert von
max_staleness
im Datensatz mit dem längsten Zusammenführungsvorgang:- Informationen dazu, wie lange es dauern kann, bis Zusammenführungsvorgänge abgeschlossen sind, finden Sie unter Empfohlener Wert für die Tabelle
max_staleness
. - Wie Sie den maximalen
max_staleness
-Wert im Datensatz ermitteln, erfahren Sie unter Aktuellenmax_staleness
-Wert einer Tabelle ermitteln. Passen Sie die Abfrage an Ihre spezifischen Anforderungen an. - Wenn die geschätzte Pause zu lang ist, um von Ihrer Quelldatenbank unterstützt zu werden, können Sie den Wert von
max_staleness
für die Tabellen im Datensatz vorübergehend reduzieren.
- Informationen dazu, wie lange es dauern kann, bis Zusammenführungsvorgänge abgeschlossen sind, finden Sie unter Empfohlener Wert für die Tabelle
- Prüfen Sie, ob der Nutzer, der die Migration durchführt, über ausreichende BigQuery-Ressourcen in der Zielregion verfügt (Abfragereservierung und Hintergrundreservierung). Weitere Informationen zu Reservierungen finden Sie unter Reservierungszuweisungen.
- Prüfen Sie, ob der Nutzer, der die Migration durchführt, über ausreichende Berechtigungen für diesen Vorgang verfügt, z. B. IAM-Berechtigungen (Identity and Access Management) oder VPC Service Controls.
Migrationsschritte
Verwenden Sie die BigQuery-Datenreplikation, um eine Datasetmigration einzuleiten:
Öffnen Sie in der Google Cloud Console die Seite BigQuery Studio.
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
.
Beobachten Sie den Migrationsfortschritt und warten Sie, bis das Kopierwasserzeichen im Replikat nur noch wenige Minuten vom primären Datenträger entfernt ist. Sie können diese Abfrage im BigQuery INFORMATION_SCHEMA 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: die ID Ihres Google Cloud Projekts.
- DATASET_NAME: der Name Ihres Datasets.
- DATASET_REPLICA_STALENESS: die Staleness-Konfiguration der Tabellen im von Ihnen erstellten Dataset-Replikat.
- NEW_REGION: die Region, in der Sie das Dataset erstellt haben.
Pausieren Sie den vorhandenen Datastream-Stream. Weitere Informationen finden Sie unter Stream pausieren.
Warten Sie, bis der Stream vollständig abgelaufen ist, und notieren Sie sich die Zeit, zu der der Stream den Status
PAUSED
erreicht hat.Prüfen Sie, ob die neuesten CDC-Änderungen auf die BigQuery-Tabelle angewendet wurden. Sehen Sie dazu in der Tabelle nach, ob das Symbol
upsert_stream_apply_watermark
angezeigt wird. Führe die folgende Abfrage aus und achte darauf, dass der Zeitstempel des Wasserzeichens 10 Minuten nach dem Pausieren des Streams liegt: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, für die Sie die
upsert_stream_apply_watermark
prüfen möchten.
Verwende die Abfrage aus Schritt 3, um zu prüfen, ob das Wasserzeichen der Kopie der neuen Region später als die in Schritt 6 erfasste
upsert_stream_apply_watermark
ist.Optional können Sie mehrere Tabellen im primären Dataset in der ursprünglichen Region manuell mit dem Replikat in der neuen Region vergleichen, um sicherzustellen, dass alle Daten korrekt kopiert wurden.
Führen Sie in BigQuery Studio den folgenden Befehl aus, um das BigQuery-Dataset-Replikat zu befördern:
ALTER SCHEMA DATASET_NAME SET OPTIONS(primary_replica = 'NEW_REGION');
Ersetzen Sie Folgendes:
- DATASET_NAME: der Name Ihres Datasets.
- NEW_REGION: die Region, in der Sie das Dataset erstellt haben.
Wenn Sie das ursprüngliche Dataset (jetzt das Replikat) nicht mehr benötigen und keine zusätzlichen Kosten verursachen möchten, können Sie es in BigQuery Studio löschen:
ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
Ersetzen Sie Folgendes:
- DATASET_NAME: Name des ursprünglichen Datasets.
- ORIGINAL_REGION: die Region des ursprünglichen Datasets.
Erstellen Sie einen neuen Stream mit genau derselben Konfiguration, aber mit einem neuen BigQuery-Zielspeicherort.
Starte den neuen Stream.
Um die Replikation doppelter Ereignisse zu vermeiden, starten Sie den Stream an einer bestimmten Position:
- Bei MySQL- und Oracle-Quellen: Sie können die Protokollposition ermitteln, indem Sie die Protokolle des ursprünglichen Streams prüfen und die letzte Position ermitteln, von der aus der Stream erfolgreich gelesen wurde. Informationen zum Starten des Streams an einer bestimmten Position findest du unter Streams verwalten.
- Bei PostgreSQL-Quellen: Der neue Stream beginnt mit dem Lesen von Änderungen ab der ersten Logsequenznummer (LSN) im Replikationsslot. Da einige dieser Änderungen möglicherweise bereits im ursprünglichen Stream verarbeitet wurden, ändern Sie den Zeiger des Replikationsslots manuell auf die letzte LSN, aus der Datastream gelesen hat. Diese LSN findest du in den Datastream-Nutzerprotokollen.
Optional können Sie den ursprünglichen Stream löschen.