Auf dieser Seite werden Best Practices für die Migration von der Dataflow-Vorlage „Datastream für BigQuery“ zur integrierten BigQuery-Replikationslösung von Datastream beschrieben.
Hinweis
Bei den Anweisungen auf dieser Seite wird Folgendes vorausgesetzt:
- Sie kennen sich mit Docker aus und haben es installiert.
- Sie wissen, wie Sie Repositorys von Diensten wie GitHub klonen.
- Sie wissen, wie Sie Streams in Datastream ausführen.
- Sie haben die Google Cloud CLI installiert.
Übersicht über das Migrationstoolkit
Das Datastream BigQuery Migration Toolkit ist eine Open-Source-Software, die von Google Cloudangeboten wird. Mit dem Toolkit können Sie die Migration von der Dataflow-Datastream-zu-BigQuery-Vorlage durchführen. Sie können es aber auch für die Migration von anderen Pipelines verwenden, wie im folgenden Abschnitt Von anderen Pipelines migrieren beschrieben.
Wenn Sie Ihre BigQuery-Tabellen mit dem Toolkit migrieren möchten, müssen Sie die folgenden Schritte ausführen:
- Datastream-Stream mit BigQuery-Ziel erstellen, starten und pausieren
- Führen Sie die Migration für jede BigQuery-Tabelle aus, die migriert werden muss.
- Setzen Sie den Stream fort.
Das Toolkit führt folgende Schritte aus:
- Ruft das Quelltabellenschema mit der Datastream Discover API ab.
- Erstellt eine Datastream-kompatible BigQuery-Tabelle auf Grundlage des abgerufenen Schemas.
- Ruft das Schema der BigQuery-Tabelle ab, aus der Sie migrieren, um die erforderlichen Datentypkonvertierungen zu ermitteln.
- Kopiert alle vorhandenen Zeilen aus der Originaltabelle in die neue Tabelle, einschließlich der entsprechenden Umwandlungen des Spaltentyps.
Weitere Informationen zur Struktur des Toolkits und zu den verwendeten Argumenten finden Sie in der README.md-Datei des Toolkits.
Migrationstoolkit einrichten
So führen Sie das Migrationstoolkit mit Docker aus:
Klonen Sie das Repository und wechseln Sie in das Verzeichnis:
git clone https://github.com/GoogleCloudPlatform/datastream-bigquery-migration-toolkit && cd datastream-bigquery-migration-toolkitErstellen Sie das Image:
docker build -t migration-service .Authentifizieren Sie sich mit Ihren Google Cloud CLI-Anmeldedaten:
docker run -ti \ --name gcloud-config migration-service gcloud auth application-default loginLegen Sie die Google Cloud -Projekteigenschaft fest:
docker run -ti --volumes-from gcloud-config migration-service \ gcloud config set project PROJECT_IDErsetzen Sie PROJECT_ID durch die ID Ihres Projekts. Google Cloud
Von Dataflow zur integrierten Datastream-Lösung migrieren
Starte den Stream und pausiere ihn sofort. So kann Datastream die Position erfassen, ab der Änderungen erfasst werden, bevor die Migration beginnt.
Beenden Sie den Datastream und die Dataflow-Pipeline per Drain:
- Pausieren Sie den vorhandenen Cloud Storage-Zielstream.
- Prüfen Sie den Messwert für die Gesamtlatenz des Streams und warten Sie mindestens so lange wie die aktuelle Latenz, damit alle laufenden Ereignisse in das Ziel geschrieben werden.
- Dataflow-Job per Drain beenden.
Migration ausführen
Führen Sie die Migration im
dry_run-Modus aus. Im Modusdry_runkönnen Sie die DDL-AnweisungCREATE TABLEund die SQL-Anweisung zum Kopieren von Daten generieren, ohne sie auszuführen:docker run -v output:/output -ti --volumes-from gcloud-config \ migration-service python3 ./migration/migrate_table.py dry_run \ --project-id PROJECT_ID \ --stream-id STREAM_ID \ --datastream-region STREAM_REGION \ --source-schema-name SOURCE_SCHEMA_NAME \ --source-table-name SOURCE_TABLE_NAME \ --bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \ --bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAMEErsetzen Sie Folgendes:
- PROJECT_ID: Die eindeutige Kennung Ihres Google Cloud-Projekts.
- STREAM_ID: Die eindeutige Kennung Ihres BigQuery-Zielstreams.
- STREAM_REGION: Der Speicherort Ihres Streams, z. B.
us-central1. - SOURCE_SCHEMA_NAME: Der Name des Quellschemas.
- SOURCE_TABLE_NAME ist der Name der Quelltabelle.
- BIGQUERY_SOURCE_DATASET_NAME: Der Name des vorhandenen BigQuery-Datasets.
- BIGQUERY_SOURCE_TABLE_NAME: Der Name der vorhandenen BigQuery-Tabelle.
Prüfen Sie die
.sql-Dateien unteroutput/create_target_tableundoutput/copy_rows. Dies sind die SQL-Befehle, die in Ihrem Google Cloud -Projekt ausgeführt werden:docker run -v output:/output -ti migration-service find output/create_target_table \ -type f -print -exec cat {} \;docker run -v output:/output -ti migration-service find output/copy_rows \ -type f -print -exec cat {} \;Führen Sie die Migration im
full-Modus aus, um die SQL-Befehle auszuführen. Imfull-Modus können Sie eine Tabelle in BigQuery erstellen und alle Zeilen aus der vorhandenen BigQuery-Tabelle kopieren:docker run -v output:/output -ti --volumes-from gcloud-config \ migration-service python3 ./migration/migrate_table.py full \ --project-id PROJECT_ID \ --stream-id STREAM_ID \ --datastream-region STREAM_REGION \ --source-schema-name SOURCE_SCHEMA_NAME \ --source-table-name SOURCE_TABLE_NAME \ --bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \ --bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAME
Setzen Sie den pausierten Stream fort.
Öffnen Sie den Google Cloud Log-Explorer und suchen Sie mit der folgenden Abfrage nach Datastream-Logs:
resource.type="datastream.googleapis.com/Stream" resource.labels.stream_id=STREAM_IDSuchen Sie nach dem folgenden Log, wobei
%deine Zahl ist:Completed writing %d records into..Dieses Log weist darauf hin, dass mit dem neuen Stream Daten erfolgreich in BigQuery geladen wurden. Sie wird nur angezeigt, wenn CDC-Daten geladen werden müssen.
Von anderen Pipelines migrieren
Mit dem Toolkit können Sie auch von anderen Pipelines zur integrierten BigQuery-Lösung von Datastream migrieren.
Das Toolkit kann CREATE TABLE-DDLs für Datastream-kompatible BigQuery-Tabellen basierend auf dem Quelldatenbankschema im Modus dry_run generieren:
docker run -v output:/output -ti --volumes-from gcloud-config \
migration-service python3 ./migration/migrate_table.py dry_run \
--project-id PROJECT_ID \
--stream-id STREAM_ID \
--datastream-region STREAM_REGION \
--source-schema-name SOURCE_SCHEMA_NAME \
--source-table-name SOURCE_TABLE_NAME \
--bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \
--bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAME
Da die BigQuery-Tabellenschemas variieren können, ist es schwierig, eine universelle SQL-Anweisung zum Kopieren von Zeilen bereitzustellen. Sie können die Schemas im DDL-Verzeichnis der Quelltabelle (output/source_table_ddl) und im DDL-Verzeichnis der Zieltabelle (output/create_target_table) verwenden, um eine SQL-Anweisung mit entsprechenden Umwandlungen für die Quellspalten zu erstellen.
Hier ist ein Beispiel für das Format einer SQL-Anweisung, die Sie verwenden können:
INSERT INTO DESTINATION_TABLE (DESTINATION_COLUMN1, DESTINATION_COLUMN2...)
SELECT SOURCE_COLUMN1, SOURCE_COLUMN2
FROM SOURCE_TABLE;
Ersetzen Sie Folgendes:
- DESTINATION_TABLE: Der Name Ihrer Zieltabelle in BigQuery.
- DESTINATION_COLUMN: Der Name der Spalte in der Zieltabelle.
- SOURCE_COLUMN: Der Name der Spalte in der Quelltabelle.
- SOURCE_TABLE: Der Name der Quelltabelle.
Beschränkungen
Für das Toolkit gelten die folgenden Einschränkungen:
- Die Spaltennamen in den vorhandenen und neuen BigQuery-Tabellen müssen übereinstimmen (Metadatenspalten werden ignoriert). Die Migration schlägt fehl, wenn Sie nutzerdefinierte Dataflow-Funktionen (UDFs) anwenden, die die Namen der Spalten in den vorhandenen Tabellen ändern, z. B. durch Hinzufügen eines Präfixes oder Ändern der Groß-/Kleinschreibung.
- Regionen- und projektübergreifende Migrationen werden nicht unterstützt.
- Die Migration erfolgt tabellenweise.
- Es werden nur Oracle- und MySQL-Quellen unterstützt.