In questa pagina vengono descritte le best practice relative all'utilizzo di Datastream per la migrazione da Il modello Dataflow da Datastream a BigQuery alla soluzione di replica BigQuery integrata di Datastream.
Prima di iniziare
Le istruzioni riportate in questa pagina presuppongono quanto segue:
- Conosci e hai installato Docker.
- Devi sapere come clonare i repository da servizi come GitHub.
- Sai come eseguire stream in Datastream.
- Aver installato Google Cloud CLI.
Panoramica del toolkit di migrazione
BigQuery Migration Toolkit di Datastream è una piattaforma offerto da Google Cloud. Il toolkit ti consente di eseguire la migrazione dal modello Datastream a BigQuery di Dataflow, ma puoi utilizzarlo anche per la migrazione da altre pipeline, come spiegato nella sezione Eseguire la migrazione da altre pipeline che segue.
Per eseguire la migrazione delle tabelle BigQuery utilizzando il toolkit, devi svolgere i seguenti passaggi:
- Crea, avvia e metti in pausa un flusso di dati Datastream con un BigQuery destinazione.
- Esegui la migrazione su ogni tabella BigQuery di cui è necessario eseguire la migrazione.
- Riprendi il flusso.
Il toolkit fa quanto segue:
- Recupera lo schema della tabella di origine utilizzando l'API discover di Datastream.
- Crea una tabella BigQuery compatibile con Datastream in base allo schema recuperato.
- Recupera lo schema della tabella BigQuery da cui esegui la migrazione per determinare le conversioni dei tipi di dati necessarie.
- Copia tutte le righe esistenti dalla tabella originale nella nuova tabella, tra cui cast del tipo di colonna appropriato.
Per ulteriori informazioni sulla struttura del toolkit e sugli argomenti
che utilizza, consulta il file README.md
del toolkit.
Configurare il kit di migrazione
Per eseguire il toolkit per la migrazione utilizzando Docker, svolgi i seguenti passaggi:
Clona il repository e passa alla directory:
git clone https://github.com/GoogleCloudPlatform/datastream-bigquery-migration-toolkit && cd datastream-bigquery-migration-toolkit
Crea l'immagine:
docker build -t migration-service .
Esegui l'autenticazione con le tue credenziali Google Cloud CLI:
docker run -ti \ --name gcloud-config migration-service gcloud auth application-default login
Imposta la proprietà del progetto Google Cloud:
docker run -ti --volumes-from gcloud-config migration-service \ gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID con l'identificatore del tuo account Google Cloud progetto.
Esegui la migrazione da Dataflow alla soluzione integrata di Datastream
Avviare lo stream e metterlo subito in pausa. Questo consente a Datastream per acquisire la posizione da cui acquisisce le modifiche prima dell'inizio della migrazione.
Svuota la pipeline Datastream e Dataflow:
- Metti in pausa lo stream di destinazione Cloud Storage esistente.
- Controlla la metrica della latenza totale per lo stream e attendi almeno un intervallo di tempo la latenza corrente per garantire che tutti gli eventi in corso vengano scritti destinazione.
- Svuota il job Dataflow.
Esegui la migrazione:
Esegui la migrazione in modalità
dry_run
. La modalitàdry_run
consente di generare l'istruzione DDLCREATE TABLE
e l'istruzione SQL per la copia dei dati, senza eseguirli: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
Sostituisci quanto segue:
- PROJECT_ID: l'identificatore univoco del tuo progetto Google Cloud.
- STREAM_ID: l'identificatore univoco del tuo account BigQuery flusso di destinazione.
- STREAM_REGION: la posizione dello stream, ad esempio
us-central1
. - SOURCE_SCHEMA_NAME: il nome dello schema di origine.
- SOURCE_TABLE_NAME: il nome della tabella di origine.
- BIGQUERY_SOURCE_DATASET_NAME: il nome della piattaforma BigQuery esistente del set di dati.
- BIGQUERY_SOURCE_TABLE_NAME: il nome della piattaforma BigQuery esistente tabella.
Controlla i file
.sql
inoutput/create_target_table
eoutput/copy_rows
. Questi sono i comandi SQL che verranno eseguiti nel tuo progetto Google Cloud: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 {} \;
Per eseguire i comandi SQL, esegui la migrazione in modalità
full
. La modalitàfull
consente di creare una tabella in BigQuery e di copiare tutte le righe dalla tabella BigQuery esistente: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
Riprendi lo stream in pausa.
Apri Esplora log di Google Cloud e cerca i log di Datastream con la seguente query:
resource.type="datastream.googleapis.com/Stream" resource.labels.stream_id=STREAM_ID
Cerca il seguente log, dove
%d
è un numero:Completed writing %d records into..
Questo log indica che il nuovo stream ha caricato correttamente i dati in BigQuery. Viene visualizzato solo se sono presenti dati CDC da caricare.
Esegui la migrazione da altre pipeline
Il toolkit consente anche di eseguire la migrazione da altre pipeline a Datastream
soluzione BigQuery integrata.
Il toolkit può generare DDL CREATE TABLE
per le tabelle BigQuery compatibili con Datastream, in base allo schema del database di origine, utilizzando la modalità dry_run
:
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
Poiché gli schemi delle tabelle BigQuery possono variare, è difficile fornire un'istruzione SQL universale per la copia delle righe. Puoi utilizzare gli schemi nell'origine
la directory DDL della tabella (output/source_table_ddl
) e il DDL della tabella di destinazione
(output/create_target_table
) per creare un'istruzione SQL con le
trasmette sulla fonte
colonne.
Di seguito è riportato un esempio di formato dell'istruzione SQL che puoi utilizzare:
INSERT INTO DESTINATION_TABLE (DESTINATION_COLUMN1, DESTINATION_COLUMN2...)
SELECT SOURCE_COLUMN1, SOURCE_COLUMN2
FROM SOURCE_TABLE;
Sostituisci quanto segue:
- DESTINATION_TABLE: il nome della tabella di destinazione in BigQuery.
- DESTINATION_COLUMN: il nome della colonna nella tabella di destinazione.
- SOURCE_COLUMN: il nome della colonna nella tabella di origine.
- SOURCE_TABLE: il nome della tabella di origine.
Limitazioni
Il toolkit presenta le seguenti limitazioni:
- I nomi delle colonne nelle tabelle BigQuery esistenti e nuove devono corrispondere (ignorando le colonne dei metadati). La migrazione non riesce se applichi Dataflow funzioni definite dall'utente (UDF) che modificano i nomi delle colonne nelle tabelle esistenti (ad esempio, aggiungendo un prefisso o cambiando maiuscole e minuscole).
- Le migrazioni tra regioni e tra progetti non sono supportate.
- La migrazione funziona per singola tabella.
- Sono supportate solo origini Oracle e MySQL.