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
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- 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.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Sourcedb to Spanner template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- 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 elijasVERSION
: la versión de la plantilla que quieres usarPuedes 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 fragmentoINSTANCE_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 DataflowJOB_NAME
: un nombre de trabajo único que elijasVERSION
: la versión de la plantilla que quieres usarPuedes 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 fragmentoINSTANCE_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.