Modello da MySQL a BigQuery

Il modello da MySQL a BigQuery è una pipeline batch che copia i dati da una tabella MySQL in una tabella BigQuery esistente. Questa pipeline utilizza JDBC per connettersi a MySQL. Per un ulteriore livello di protezione, puoi anche trasferire una chiave Cloud KMS insieme a parametri di nome utente, password e stringa di connessione codificati in Base64 e criptati con la chiave Cloud KMS. Per ulteriori informazioni sulla crittografia di nome utente, password e parametri della stringa di connessione, consulta la pagina relativa all'endpoint di crittografia dell'API Cloud KMS.

Requisiti della pipeline

  • La tabella BigQuery deve esistere prima dell'esecuzione della pipeline.
  • La tabella BigQuery deve avere uno schema compatibile.
  • Il database relazionale deve essere accessibile dalla subnet in cui viene eseguito Dataflow.

Parametri del modello

Parametro Descrizione
connectionURL La stringa dell'URL di connessione JDBC. Ad esempio, jdbc:mysql://some-host:3306/sampledb. Puoi passare questo valore come stringa criptata con una chiave Cloud KMS e poi codificata in Base64. Rimuovi gli spazi dalla stringa codificata Base64.
outputTable La posizione della tabella di output BigQuery, nel formato <my-project>:<my-dataset>.<my-table>.
bigQueryLoadingTemporaryDirectory La directory temporanea per il processo di caricamento di BigQuery. Ad esempio, gs://<my-bucket>/my-files/temp_dir.
query La query da eseguire sull'origine per estrarre i dati. Ad esempio, select * from sampledb.sample_table. Obbligatorio se non si utilizzano le partizioni.
table La tabella da cui estrarre i dati. Questo parametro accetta anche una sottoquery tra parentesi. Ad esempio, Person o (select id, name from Person) as subq. Obbligatorio quando si utilizzano le partizioni.
partitionColumn Il nome di una colonna da utilizzare per il partizionamento. Sono supportate solo le colonne numeriche. Obbligatorio quando si utilizzano le partizioni.
connectionProperties (Facoltativo) La stringa delle proprietà da utilizzare per la connessione JDBC. Il formato della stringa deve essere [propertyName=property;]*. Ad esempio, unicode=true;characterEncoding=UTF-8. Per ulteriori informazioni, consulta Proprietà di configurazione nella documentazione di MySQL.
username (Facoltativo) Il nome utente da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64.
password (Facoltativo) La password da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64.
KMSEncryptionKey (Facoltativo) La chiave di crittografia di Cloud KMS da utilizzare per decriptare il nome utente, la password e la stringa di connessione. Se passi in una chiave Cloud KMS, devi anche criptare il nome utente, la password e la stringa di connessione.
numPartitions (Facoltativo) Il numero di partizioni da utilizzare. Se non specificato, il worker presume un numero conservativo.
disabledAlgorithms (Facoltativo) Algoritmi separati da virgole da disattivare. Se questo valore viene impostato su none, nessun algoritmo viene disattivato. Usa questo parametro con cautela, perché gli algoritmi disabilitati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio: SSLv3, RC4.
extraFilesToStage Percorsi di Cloud Storage o secret di Secret Manager separati da virgole per i file da inserire nel worker. Questi file vengono salvati nella directory /extra_files di ciascun worker. Ad esempio, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>.

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è us-central1.

    Per un elenco di regioni in cui è possibile eseguire un job Dataflow, consulta Località di Dataflow.

  5. Dal menu a discesa Modello Dataflow, seleziona the MySQL to BigQuery template.
  6. Inserisci i valori parametro negli appositi campi.
  7. Fai clic su Esegui job.

gcloud

Nella shell o nel terminale, esegui il modello:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/MySQL_to_BigQuery \
    --parameters \
connectionURL=JDBC_CONNECTION_URL,\
query=SOURCE_SQL_QUERY,\
outputTable=PROJECT_ID:DATASET.TABLE_NAME,
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\
connectionProperties=CONNECTION_PROPERTIES,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

Sostituisci quanto segue:

  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/
    • il nome della versione, ad esempio 2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • JDBC_CONNECTION_URL: URL di connessione JDBC
  • SOURCE_SQL_QUERY: la query SQL da eseguire sul database di origine
  • DATASET: il tuo set di dati BigQuery
  • TABLE_NAME: il nome della tua tabella BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: il percorso di Cloud Storage della directory temporanea
  • CONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessario
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: la password di connessione JDBC
  • KMS_ENCRYPTION_KEY: la chiave di crittografia di Cloud KMS

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
  "launchParameter": {
    "jobName": "JOB_NAME",
    "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/MySQL_to_BigQuery"
     "parameters": {
       "connectionURL": "JDBC_CONNECTION_URL",
       "query": "SOURCE_SQL_QUERY",
       "outputTable": "PROJECT_ID:DATASET.TABLE_NAME",
       "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS",
       "connectionProperties": "CONNECTION_PROPERTIES",
       "username": "CONNECTION_USERNAME",
       "password": "CONNECTION_PASSWORD",
       "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
     },
     "environment": { "zone": "us-central1-f" }
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

    • latest per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/
    • il nome della versione, ad esempio 2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • JDBC_CONNECTION_URL: URL di connessione JDBC
  • SOURCE_SQL_QUERY: la query SQL da eseguire sul database di origine
  • DATASET: il tuo set di dati BigQuery
  • TABLE_NAME: il nome della tua tabella BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: il percorso di Cloud Storage della directory temporanea
  • CONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessario
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: la password di connessione JDBC
  • KMS_ENCRYPTION_KEY: la chiave di crittografia di Cloud KMS

Passaggi successivi