Modèle Sourcedb vers Spanner

Le modèle SourceDB vers Spanner est un pipeline par lots qui copie les données d'une base de données relationnelle vers une base de données Spanner existante. Ce pipeline utilise JDBC pour se connecter à la base de données relationnelle. Vous pouvez utiliser ce modèle pour copier des données de toute base de données relationnelle contenant les pilotes JDBC disponibles dans Spanner. Cette fonctionnalité n'est compatible qu'avec un nombre limité de types de MySQL.

Pour obtenir une couche supplémentaire de protection, vous pouvez également transmettre une clé Cloud KMS avec des paramètres de nom d'utilisateur, de mot de passe et de chaîne de connexion encodés en base64 et chiffrés avec la clé Cloud KMS. Pour en savoir plus sur le chiffrement des paramètres de nom d'utilisateur, de mot de passe et de chaîne de connexion, consultez la page sur le point de terminaison du chiffrement de l'API Cloud KMS.

Conditions requises pour ce pipeline

  • Les pilotes JDBC de la base de données relationnelle doivent être disponibles.
  • Les tables Spanner doivent exister avant l'exécution du pipeline.
  • Les tables Spanner doivent avoir un schéma compatible.
  • La base de données relationnelle doit être accessible à partir du sous-réseau dans lequel Dataflow est exécuté.

Paramètres de modèle

Paramètre Description
sourceConfigURL Chaîne d'URL de connexion JDBC. Par exemple, jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8 ou la configuration de segmentation.
instanceId Instance Cloud Spanner de destination.
databaseId Base de données Cloud Spanner de destination.
projectId Il s'agit du nom du projet Cloud Spanner.
outputDirectory Ce répertoire permet de vider les enregistrements défaillants/ignorés/filtrés lors d'une migration.
jdbcDriverJars Facultatif : Liste des fichiers JAR du pilote, séparés par une virgule. Par exemple : gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. La valeur par défaut est vide.
jdbcDriverClassName Facultatif : Nom de la classe du pilote JDBC. Exemple : com.mysql.jdbc.Driver. La valeur par défaut est com.mysql.jdbc.Driver.
username Facultatif : Nom d'utilisateur à utiliser pour la connexion JDBC. La valeur par défaut est vide.
password Facultatif : Mot de passe à utiliser pour la connexion JDBC. La valeur par défaut est vide.
tables Facultatif : Tables à migrer depuis la source. La valeur par défaut est vide.
numPartitions Facultatif : nombre de partitions. Ce paramètre, avec les limites inférieure et supérieure, forme des pas de partition pour les expressions de clause WHERE générées, qui sont utilisées pour diviser la colonne de partition de manière uniforme. Lorsque l'entrée est inférieure à 1, le nombre est défini sur 1. La valeur par défaut est 0.
spannerHost Facultatif: Point de terminaison Cloud Spanner à appeler dans le modèle. Par exemple : https://batch-spanner.googleapis.com. La valeur par défaut est https://batch-spanner.googleapis.com.
maxConnections Facultatif : Configure le pool de connexions JDBC sur chaque nœud de calcul avec le nombre maximal de connexions. Utilisez un nombre négatif pour ne pas définir de limite. Exemple : -1. La valeur par défaut est 0.
sessionFilePath Facultatif : Chemin d'accès de la session dans Cloud Storage contenant des informations de mappage de l'outil de migration Spanner. La valeur par défaut est vide.
transformationJarPath Facultatif : Emplacement du fichier JAR personnalisé dans Cloud Storage contenant la logique de transformation personnalisée pour le traitement des enregistrements. La valeur par défaut est vide.
transformationClassName Facultatif : Nom de classe complet avec une logique de transformation personnalisée. Ce champ est obligatoire si la valeur de transformationJarPath est spécifiée. La valeur par défaut est vide.
transformationCustomParameters Facultatif : Chaîne contenant les paramètres personnalisés à transmettre à la classe de transformation personnalisée. La valeur par défaut est vide.
disabledAlgorithms Facultatif : algorithmes à désactiver, séparés par une virgule. Si cette valeur est définie sur aucun, aucun algorithme n'est désactivé. Utilisez ce paramètre avec prudence, car les algorithmes désactivés par défaut peuvent présenter des failles ou des problèmes de performances. Par exemple : SSLv3, RC4.
extraFilesToStage Facultatif : Chemins d'accès Cloud Storage ou secrets Secret Manager séparés par une virgule afin que les fichiers soient traités dans le nœud de calcul. Ces fichiers sont enregistrés dans le répertoire "/extra_files" de chaque nœud de calcul. Par exemple : gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.

Exécuter le modèle

Console

  1. Accédez à la page Dataflow Créer un job à partir d'un modèle.
  2. Accéder à la page Créer un job à partir d'un modèle
  3. Dans le champ Nom du job, saisissez un nom de job unique.
  4. Facultatif : pour Point de terminaison régional, sélectionnez une valeur dans le menu déroulant. La région par défaut est us-central1.

    Pour obtenir la liste des régions dans lesquelles vous pouvez exécuter un job Dataflow, consultez la page Emplacements Dataflow.

  5. Dans le menu déroulant Modèle Dataflow, sélectionnez the Sourcedb to Spanner template.
  6. Dans les champs fournis, saisissez vos valeurs de paramètres.
  7. Cliquez sur Run Job (Exécuter la tâche).

gcloud CLI

Dans le shell ou le terminal, exécutez le modèle :

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,\

Remplacez les éléments suivants :

  • JOB_NAME : nom de job unique de votre choix
  • VERSION : version du modèle que vous souhaitez utiliser

    Vous pouvez utiliser les valeurs suivantes :

  • REGION_NAME : région dans laquelle vous souhaitez déployer votre job Dataflow, par exemple us-central1
  • SOURCE_CONFIG_URL : URL permettant de se connecter à l'hôte de la base de données source. La valeur peut être de 1. URL de connexion JDBC, qui doit contenir le nom de l'hôte, du port et de la base de données source, et peut éventuellement contenir des propriétés telles que autoReconnect, maxReconnects etc. Format: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Chemin d'accès à la configuration de segmentation
  • INSTANCE_ID : ID de l'instance Cloud Spanner
  • DATABASE_ID : ID de la base de données Cloud Spanner
  • PROJECT_ID : ID du projet Cloud Spanner
  • OUTPUT_DIRECTORY : répertoire de sortie pour les événements défaillants/ignorés/filtrés

API

Pour exécuter le modèle à l'aide de l'API REST, envoyez une requête HTTP POST. Pour en savoir plus sur l'API, ses autorisations et leurs champs d'application, consultez la section 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" }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud dans lequel vous souhaitez exécuter le job Dataflow
  • JOB_NAME : nom de job unique de votre choix
  • VERSION : version du modèle que vous souhaitez utiliser

    Vous pouvez utiliser les valeurs suivantes :

  • LOCATION : région dans laquelle vous souhaitez déployer votre job Dataflow, par exemple us-central1
  • SOURCE_CONFIG_URL : URL permettant de se connecter à l'hôte de la base de données source. La valeur peut être de 1. URL de connexion JDBC, qui doit contenir le nom de l'hôte, du port et de la base de données source, et peut éventuellement contenir des propriétés telles que autoReconnect, maxReconnects etc. Format: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Chemin d'accès à la configuration de segmentation
  • INSTANCE_ID : ID de l'instance Cloud Spanner
  • DATABASE_ID : ID de la base de données Cloud Spanner
  • PROJECT_ID : ID du projet Cloud Spanner
  • OUTPUT_DIRECTORY : répertoire de sortie pour les événements défaillants/ignorés/filtrés