Auf dieser Seite werden Best Practices für einen Anwendungsfall beschrieben, bei dem Sie Datastream-Replikation in BigQuery, aber konfiguriert die Ziel-Dataset in einer falschen Region ist. Dann möchten Sie das Dataset eine andere (oder multiregionale) Region, ohne alle Daten neu synchronisieren zu müssen. aus der Quelldatenbank in BigQuery.
Hinweis
Beachten Sie die folgenden Punkte, bevor Sie mit der Migration Ihrer Daten in eine andere Region beginnen:
- Die Migration nimmt Zeit in Anspruch und Sie müssen den Stream während der
. Um die Datenintegrität zu wahren, müssen die Änderungsprotokolle in der Quelldatenbank beibehalten werden, wenn der Stream pausiert wird. Um zu schätzen, wie lange der Stream pausiert werden muss,
den Wert von
max_staleness
im Dataset und den Wert mit der längsten Laufzeit kombinieren, 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 Ihre Quelldatenbank zu unterstützen,
sollten Sie den Wert von
max_staleness
vorübergehend reduzieren für die Tabellen im Dataset.
- Informationen dazu, wie lange es dauern kann, bis Zusammenführungsvorgänge abgeschlossen sind, finden Sie unter Empfohlener Wert für die Tabelle
- Prüfen, ob der Nutzer, der die Migration durchführt, über genügend BigQuery verfügt in der Zielregion (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
So initiieren Sie die Dataset-Migration: BigQuery-Datenreplikation verwenden:
Ö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 Ihre erstellen möchten
Dataset. 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 auf das INFORMATION_SCHEMA von BigQuery um den Migrationsfortschritt zu überprü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 des Tabellen in dem Dataset-Replikat, das Sie erstellt haben.
- NEW_REGION: Die Region, in der Sie das Dataset erstellt haben.
Pausieren Sie den vorhandenen Datastream-Stream. Weitere Informationen finden Sie unter Pausiere den Stream.
Warten Sie, bis sich der Strom entladen hat, und notieren Sie sich die Zeit, zu der er in den
PAUSED
.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, deren
upsert_stream_apply_watermark
Prüfen Sie mit der Abfrage aus Schritt 3, ob das neue Wasserzeichen für die Regionskopie als der in Schritt 6 erfasste
upsert_stream_apply_watermark
.Optional können Sie mehrere Tabellen im primären Dataset im mit dem Replikat in der neuen Region, um zu prüfen, ob alle Daten wurde korrekt kopiert.
Stufen Sie das BigQuery-Dataset-Replikat hoch, indem Sie den folgenden Befehl ausführen: -Befehl in BigQuery Studio:
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.
Optional, wenn Sie das ursprüngliche Dataset (jetzt das Replikat) nicht mehr benötigen und keine zusätzlichen Kosten verursachen möchten, öffnen Sie BigQuery Studio und das ursprüngliche BigQuery-Dataset:
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.
Erstellen Sie einen neuen Stream mit genau derselben Konfiguration, aber mit einem neuen BigQuery-Zielspeicherort.
Starten Sie den neuen Stream.
Um die Replikation doppelter Ereignisse zu vermeiden, starten Sie den Stream an einer bestimmten Position:
- Für MySQL- und Oracle-Quellen: Sie können die Logposition identifizieren. indem Sie die Logs des ursprünglichen Streams untersuchen und die letzte Position aus denen der Stream gelesen hat. Informationen zum Starten des Streams an einer bestimmten Position findest du unter Streams verwalten.
- Für PostgreSQL-Quellen: Der neue Stream beginnt, Änderungen aus dem 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. Sie finden diese LSN in den Datastream-Nutzerlogs.
Optional können Sie den ursprünglichen Stream löschen.