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 set 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 e criptati con la chiave Cloud KMS. Per ulteriori dettagli sulla crittografia dei parametri di nome utente, password e stringa di connessione, consulta l'endpoint di crittografia dell'API Cloud KMS.

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 La 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/saltati/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) Le tabelle di cui eseguire la migrazione dall'origine. Il valore predefinito è vuoto.
numPartitions (Facoltativo) Il numero di partizioni. Questo, insieme al limite inferiore e superiore, forma gli intervalli di partizioni per le espressioni della clausola WHERE generate utilizzate per dividere uniformemente la colonna di partizione. Se l'input è inferiore a 1, il numero viene impostato su 1. Il 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 non avere limiti. Ad esempio: -1. Il valore predefinito è: 0.
sessionFilePath (Facoltativo) Il percorso della sessione in Cloud Storage che contiene le informazioni di mapping di Spanner Migration Tool. Il valore predefinito è vuoto.
transformationJarPath (Facoltativo) La posizione del file JAR personalizzato in Cloud Storage che contiene la logica di trasformazione personalizzata per l'elaborazione dei record. Il valore predefinito è vuoto.
transformationClassName (Facoltativo) Il nome della classe completo con la logica di trasformazione personalizzata. È un campo obbligatorio se viene specificato transformationJarPath. Il valore predefinito è vuoto.
transformationCustomParameters (Facoltativo) La stringa contenente eventuali parametri personalizzati da passare alla classe di trasformazione personalizzata. Il valore predefinito è vuoto.
disabledAlgorithms (Facoltativo) Gli algoritmi separati da virgole da disattivare. Se questo valore è impostato su none, non viene disattivato alcun algoritmo. Utilizza questo parametro con cautela, perché gli algoritmi disattivati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio: SSLv3, RC4.
extraFilesToStage (Facoltativo) I percorsi di Cloud Storage o i secret di 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 job univoco.
  4. (Facoltativo) Per Endpoint regionale, 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 Dataflow, seleziona il modello Sourcedb to Spanner.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. Fai clic su Esegui job.

gcloud CLI

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 job univoco 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 connetterti all'host del database di origine. Può essere uno dei seguenti: 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 dell'istanza Cloud Spanner.
  • DATABASE_ID: l'ID del database Cloud Spanner.
  • PROJECT_ID: l'ID del 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 HTTP POST. 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' Google Cloud ID progetto 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:

  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • SOURCE_CONFIG_URL: l'URL per connetterti all'host del database di origine. Può essere uno dei seguenti: 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 dell'istanza Cloud Spanner.
  • DATABASE_ID: l'ID del database Cloud Spanner.
  • PROJECT_ID: l'ID del progetto Cloud Spanner.
  • OUTPUT_DIRECTORY: la directory di output per gli eventi non riusciti/saltati/filtrati