Plantilla de Sourcedb a Spanner

La plantilla SourceDB to Spanner es una canalización por lotes que copia datos de una base de datos relacional en una base de datos de Spanner. Esta canalización usa JDBC para conectarse a la base de datos relacional. Puede usar esta plantilla para copiar datos de cualquier base de datos relacional con controladores JDBC disponibles en Spanner. Solo admite un conjunto limitado de tipos de MySQL

Para añadir una capa de protección adicional, también puedes incluir una clave de Cloud KMS junto con los parámetros de nombre de usuario, contraseña y cadena de conexión codificados en Base64 y encriptados con la clave de Cloud KMS. Consulta el endpoint Encriptación de la API de Cloud KMS para obtener más información sobre cómo encriptar los parámetros de nombre de usuario, contraseña y cadena de conexión.

Requisitos del flujo de procesamiento

  • Los controladores JDBC de la base de datos relacional deben estar disponibles.
  • Las tablas de Spanner deben existir antes de ejecutar el flujo de procesamiento.
  • Las tablas de Spanner deben tener un esquema compatible.
  • Se debe poder acceder a la base de datos relacional desde la subred en la que se ejecuta Dataflow.

Parámetros de plantilla

Parámetro Descripción
sourceConfigURL Cadena de URL de conexión JDBC. Por ejemplo, jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8 o la configuración de fragmento.
instanceId La instancia de Cloud Spanner de destino.
databaseId La base de datos de Cloud Spanner de destino.
projectId Es el nombre del proyecto de Cloud Spanner.
outputDirectory Este directorio se usa para volcar los registros fallidos, omitidos o filtrados en una migración.
jdbcDriverJars Opcional: lista de archivos JAR de controladores separados por comas. Por ejemplo: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. El valor predeterminado es una cadena vacía.
jdbcDriverClassName Opcional: nombre de la clase del controlador JDBC. Por ejemplo: com.mysql.jdbc.Driver. El valor predeterminado es: com.mysql.jdbc.Driver.
username Opcional: nombre de usuario que se usará para la conexión JDBC. El valor predeterminado es una cadena vacía.
password Opcional: la contraseña que se usará para la conexión JDBC. El valor predeterminado es una cadena vacía.
tables Opcional: Tablas que se van a migrar desde el origen. El valor predeterminado es una cadena vacía.
numPartitions Opcional: número de particiones. Junto con los límites inferior y superior, forman pasos de partición para las expresiones de la cláusula WHERE generadas que se usan para dividir la columna de partición de forma uniforme. Si el valor introducido es inferior a 1, el número se establece en 1. El valor predeterminado es 0.
spannerHost Opcional: Endpoint de Cloud Spanner al que se llama en la plantilla. Por ejemplo: https://batch-spanner.googleapis.com. El valor predeterminado es https://batch-spanner.googleapis.com.
maxConnections Opcional: configura el grupo de conexiones JDBC en cada trabajador con el número máximo de conexiones. Usa un número negativo para que no haya límite. Por ejemplo: -1. El valor predeterminado es 0.
sessionFilePath Opcional: ruta de la sesión en Cloud Storage que contiene información de asignación de Spanner Migration Tool. El valor predeterminado es una cadena vacía.
transformationJarPath Opcional: ubicación de un archivo JAR personalizado en Cloud Storage que contiene la lógica de transformación personalizada para procesar registros. El valor predeterminado es una cadena vacía.
transformationClassName Opcional: nombre de clase completo que tiene la lógica de transformación personalizada. Es un campo obligatorio si se especifica transformationJarPath. El valor predeterminado es una cadena vacía.
transformationCustomParameters Opcional: cadena que contiene los parámetros personalizados que se van a transferir a la clase de transformación personalizada. El valor predeterminado es una cadena vacía.
disabledAlgorithms Opcional: algoritmos separados por comas que se van a inhabilitar. Si se asigna el valor "none", no se inhabilita ningún algoritmo. Usa este parámetro con cuidado, ya que los algoritmos inhabilitados de forma predeterminada pueden tener vulnerabilidades o problemas de rendimiento. Por ejemplo: SSLv3, RC4.
extraFilesToStage Opcional: rutas de Cloud Storage o secretos de Secret Manager separados por comas de los archivos que se van a almacenar en el trabajador. Estos archivos se guardan en el directorio /extra_files de cada trabajador. Por ejemplo: gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.

Ejecutar la plantilla

Consola

  1. Ve a la página Crear tarea a partir de plantilla de Dataflow.
  2. Ir a Crear tarea a partir de plantilla
  3. En el campo Nombre de la tarea, introduce un nombre único.
  4. Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es us-central1.

    Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the Sourcedb to Spanner template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. Haz clic en Ejecutar trabajo.

CLI de gcloud

En tu shell o terminal, ejecuta la plantilla:

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

Haz los cambios siguientes:

  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • SOURCE_CONFIG_URL: URL para conectarse al host de la base de datos de origen. Puede ser cualquiera de las dos. La URL de conexión JDBC, que debe contener el host, el puerto y el nombre de la base de datos de origen, y que puede contener propiedades como autoReconnect, maxReconnects, etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Ruta de configuración del fragmento
  • INSTANCE_ID: el ID de la instancia de Cloud Spanner.
  • DATABASE_ID: el ID de la base de datos de Cloud Spanner.
  • PROJECT_ID: el ID de proyecto de Cloud Spanner.
  • OUTPUT_DIRECTORY: el directorio de salida de los eventos fallidos, omitidos o filtrados.

API

Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, 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" }
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • LOCATION: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • SOURCE_CONFIG_URL: URL para conectarse al host de la base de datos de origen. Puede ser cualquiera de las dos. La URL de conexión JDBC, que debe contener el host, el puerto y el nombre de la base de datos de origen, y que puede contener propiedades como autoReconnect, maxReconnects, etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Ruta de configuración del fragmento
  • INSTANCE_ID: el ID de la instancia de Cloud Spanner.
  • DATABASE_ID: el ID de la base de datos de Cloud Spanner.
  • PROJECT_ID: el ID de proyecto de Cloud Spanner.
  • OUTPUT_DIRECTORY: el directorio de salida de los eventos fallidos, omitidos o filtrados.