Modello SourceDB to Spanner

Il modello SourceDB to Spanner è una pipeline batch che copia i dati da un database relazionale in un database Spanner esistente. Questa pipeline utilizza JDBC per connettersi al database relazionale. Puoi utilizzare questo modello per copiare i dati da qualsiasi database relazionale con driver JDBC disponibili in Spanner. Supporta solo un insieme limitato di tipi di MySQL

Per un ulteriore livello di protezione, puoi anche passare una chiave Cloud KMS insieme a parametri di nome utente, password e stringa di connessione codificati in Base64 criptati con la chiave Cloud KMS. Consulta l'endpoint Crittografia API Cloud KMS per ulteriori dettagli sulla crittografia dei parametri di nome utente, password e stringa di connessione.

Requisiti della pipeline

  • I driver JDBC per il database relazionale devono essere disponibili.
  • Le tabelle Spanner devono esistere prima dell'esecuzione della pipeline.
  • Le tabelle Spanner devono avere uno schema compatibile.
  • Il database relazionale deve essere accessibile dalla subnet in cui viene eseguito Dataflow.

Parametri del modello

Parametro Descrizione
sourceConfigURL Stringa dell'URL di connessione JDBC. Ad esempio, jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8 o la configurazione dello shard.
instanceId L'istanza Cloud Spanner di destinazione.
databaseId Il database Cloud Spanner di destinazione.
projectId Questo è il nome del progetto Cloud Spanner.
outputDirectory Questa directory viene utilizzata per scaricare i record non riusciti/ignorati/filtrati in una migrazione.
jdbcDriverJars (Facoltativo) L'elenco separato da virgole dei file JAR del driver. Ad esempio: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. Il valore predefinito è vuoto.
jdbcDriverClassName (Facoltativo) Il nome della classe del driver JDBC. Ad esempio: com.mysql.jdbc.Driver. Il valore predefinito è: com.mysql.jdbc.Driver.
username (Facoltativo) Il nome utente da utilizzare per la connessione JDBC. Il valore predefinito è vuoto.
password (Facoltativo) La password da utilizzare per la connessione JDBC. Il valore predefinito è vuoto.
tables (Facoltativo) Tabelle di cui eseguire la migrazione dall'origine. Il valore predefinito è vuoto.
numPartitions (Facoltativo) Il numero di partizioni. Questi valori, insieme al limite inferiore e superiore, formano gli incrementi delle partizioni per le espressioni della clausola WHERE generate utilizzate per dividere uniformemente la colonna di partizione. Quando l'input è inferiore a 1, il numero viene impostato su 1. Valore predefinito: 0.
spannerHost (Facoltativo) L'endpoint Cloud Spanner da chiamare nel modello. Ad esempio: https://batch-spanner.googleapis.com. Il valore predefinito è: https://batch-spanner.googleapis.com.
maxConnections (Facoltativo) Configura il pool di connessioni JDBC su ogni worker con il numero massimo di connessioni. Utilizza un numero negativo per nessun limite. Ad esempio: -1. Valore predefinito: 0.
sessionFilePath (Facoltativo) Il percorso della sessione in Cloud Storage che contiene le informazioni di mappatura di Spanner Migration Tool. Il valore predefinito è vuoto.
transformationJarPath (Facoltativo) Posizione JAR personalizzata in Cloud Storage che contiene la logica di trasformazione personalizzata per l'elaborazione dei record. Il valore predefinito è vuoto.
transformationClassName (Facoltativo) Nome della classe completo con la logica di trasformazione personalizzata. È un campo obbligatorio se viene specificato transformationJarPath. Il valore predefinito è vuoto.
transformationCustomParameters (Facoltativo) Stringa contenente eventuali parametri personalizzati da passare alla classe di trasformazione personalizzata. Il valore predefinito è vuoto.
disabledAlgorithms (Facoltativo) Algoritmi separati da virgole da disattivare. Se questo valore è impostato su none, nessun algoritmo viene disattivato. Utilizza questo parametro con cautela, perché gli algoritmi disabilitati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio: SSLv3, RC4.
extraFilesToStage (Facoltativo) Percorsi Cloud Storage o secret Secret Manager separati da virgole per i file da preparare nel worker. Questi file vengono salvati nella directory /extra_files di ogni worker. Ad esempio: gs://<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 delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.

  5. Dal menu a discesa Modello di dataflow, seleziona the Sourcedb to Spanner template.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. Fai clic su Esegui job.

Interfaccia a riga di comando gcloud

Nella shell o nel terminale, esegui il modello:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Sourcedb_to_Spanner_Flex \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       sourceConfigURL=SOURCE_CONFIG_URL,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       projectId=PROJECT_ID,\
       outputDirectory=OUTPUT_DIRECTORY,\

Sostituisci quanto segue:

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

    Puoi utilizzare i seguenti valori:

  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • SOURCE_CONFIG_URL: l'URL per connettersi all'host del database di origine. Può essere 1. L'URL di connessione JDBC, che deve contenere l'host, la porta e il nome del database di origine e può contenere facoltativamente proprietà come autoReconnect, maxReconnects e così via. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Il percorso di configurazione dello shard
  • INSTANCE_ID: l'ID istanza Cloud Spanner.
  • DATABASE_ID: l'ID del database Cloud Spanner.
  • PROJECT_ID: l'ID progetto Cloud Spanner.
  • OUTPUT_DIRECTORY: la directory di output per gli eventi non riusciti/saltati/filtrati

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per ulteriori 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",
     "parameters": {
       "sourceConfigURL": "SOURCE_CONFIG_URL",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "projectId": "PROJECT_ID",
       "outputDirectory": "OUTPUT_DIRECTORY",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Sourcedb_to_Spanner_Flex",
     "environment": { "maxWorkers": "10" }
  }
}

Sostituisci quanto segue:

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

    Puoi utilizzare i seguenti valori:

  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • SOURCE_CONFIG_URL: l'URL per connettersi all'host del database di origine. Può essere 1. L'URL di connessione JDBC, che deve contenere l'host, la porta e il nome del database di origine e può contenere facoltativamente proprietà come autoReconnect, maxReconnects e così via. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Il percorso di configurazione dello shard
  • INSTANCE_ID: l'ID istanza Cloud Spanner.
  • DATABASE_ID: l'ID del database Cloud Spanner.
  • PROJECT_ID: l'ID progetto Cloud Spanner.
  • OUTPUT_DIRECTORY: la directory di output per gli eventi non riusciti/saltati/filtrati