Plantilla de Sourcedb a Spanner

La plantilla de SourceDB a Spanner es una canalización por lotes que copia los datos de una base de datos relacional a una base de datos de Spanner existente. Esta canalización utiliza JDBC para conectarse a las bases de datos relacionales. Puedes usar esta plantilla para copiar datos desde cualquier base de datos relacional con controladores de JDBC disponibles en Spanner. Solo admite un conjunto limitado de tipos de MySQL.

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

Requisitos de la canalización

  • Los controladores de JDBC de la base de datos relacional deben estar disponibles.
  • Las tablas de Spanner deben existir antes de ejecutar la canalización.
  • Las tablas de Spanner deben tener un esquema compatible.
  • La base de datos relacional debe ser accesible desde la subred en la que se ejecuta Dataflow.

Parámetros de la plantilla

Parámetro Descripción
sourceConfigURL La string de la URL de la conexión de 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 del fragmento.
instanceId La instancia de destino de Cloud Spanner.
databaseId La base de datos de destino de Cloud Spanner.
projectId Este es el nombre del proyecto de Cloud Spanner.
outputDirectory Este directorio se usa para volcar los registros con errores, omitidos o filtrados en una migración.
jdbcDriverJars Opcional: La lista separada por comas de los archivos JAR del controlador. Por ejemplo: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. La configuración predeterminada es vacía.
jdbcDriverClassName Opcional: El nombre de la clase del controlador de JDBC. Por ejemplo: com.mysql.jdbc.Driver. La configuración predeterminada es com.mysql.jdbc.Driver.
username Opcional: El nombre de usuario para usar en la conexión de JDBC. La configuración predeterminada es vacía.
password Opcional: La contraseña para usar en la conexión de JDBC. La configuración predeterminada es vacía.
tables Opcional: Las tablas que se migrarán desde la fuente. La configuración predeterminada es vacía.
numPartitions La cantidad de particiones (opcional). Esto, junto con el límite inferior y superior, forma segmentaciones de particiones para las expresiones de cláusula WHERE generadas que se usan para dividir la columna de partición de manera uniforme. Cuando la entrada es menor que 1, se establece el número en 1. La configuración predeterminada es 0.
spannerHost El extremo de Cloud Spanner al que se llamará en la plantilla (opcional). Por ejemplo: https://batch-spanner.googleapis.com. La configuración predeterminada es https://batch-spanner.googleapis.com.
maxConnections Opcional: Configura el grupo de conexiones de JDBC en cada trabajador con la cantidad máxima de conexiones. Usa un número negativo para no tener límite. Por ejemplo: -1. La configuración predeterminada es 0.
sessionFilePath Opcional: Ruta de acceso de la sesión en Cloud Storage que contiene información de asignación de la herramienta de migración de Spanner. La configuración predeterminada es vacía.
transformationJarPath Opcional: La ubicación de archivo JAR personalizada en Cloud Storage que contiene la lógica de transformación personalizada para procesar registros. La configuración predeterminada es vacía.
transformationClassName Opcional: El nombre de clase completamente calificado que tiene la lógica de transformación personalizada. Es un campo obligatorio en caso de que se especifique transformJarPath. La configuración predeterminada es vacía.
transformationCustomParameters Opcional: La cadena que contiene cualquier parámetro personalizado que se pasará a la clase de transformación personalizada. La configuración predeterminada es vacía.
disabledAlgorithms Opcional: Algoritmos separados por comas que se deben inhabilitar. Si este valor se establece como ninguno, no se inhabilita ningún algoritmo. Ten cuidado con este parámetro, ya que los algoritmos inhabilitados de forma predeterminada podrían tener vulnerabilidades o problemas de rendimiento. Por ejemplo: SSLv3, RC4.
extraFilesToStage Rutas de Cloud Storage separadas por comas o secretos de Secret Manager para los archivos que se deben almacenar en etapa intermedia en el trabajador. Estos archivos se guardan en el directorio /extra_files en cada trabajador. Por ejemplo: gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.

Ejecuta la plantilla

Console

  1. Ve a la página Crear un trabajo a partir de una plantilla de Dataflow.
  2. Ir a Crear un trabajo a partir de una plantilla
  3. En el campo Nombre del trabajo, ingresa un nombre de trabajo único.
  4. Opcional: Para Extremo regional, selecciona un valor del menú desplegable. La región predeterminada es us-central1.

    Para obtener una lista de regiones en las que puedes ejecutar un trabajo de Dataflow, consulta Ubicaciones de Dataflow.

  5. En el menú desplegable Plantilla de Dataflow, selecciona the Sourcedb to Spanner template.
  6. En los campos de parámetros proporcionados, ingresa los valores de tus 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,\

Reemplaza lo siguiente:

  • JOB_NAME: Es el nombre del trabajo que elijas
  • VERSION: Es la versión de la plantilla que deseas usar.

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket 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 puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo, us-central1
  • SOURCE_CONFIG_URL: La URL para conectarse al host de la base de datos de origen. Puede ser cualquiera de las siguientes opciones: La URL de conexión de JDBC, que debe contener el host, el puerto y el nombre de la base de datos de origen y, de forma opcional, puede contener propiedades como autoReconnect, maxReconnects, etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. La ruta de acceso 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 del proyecto de Cloud Spanner.
  • OUTPUT_DIRECTORY: El directorio de salida para los eventos con errores, omitidos o filtrados.

API

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

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud en el que deseas ejecutar el trabajo de Dataflow.
  • JOB_NAME: Es el nombre del trabajo que elijas
  • VERSION: Es la versión de la plantilla que deseas usar.

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket 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 puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
  • LOCATION: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo, us-central1
  • SOURCE_CONFIG_URL: La URL para conectarse al host de la base de datos de origen. Puede ser cualquiera de las siguientes opciones: La URL de conexión de JDBC, que debe contener el host, el puerto y el nombre de la base de datos de origen y, de forma opcional, puede contener propiedades como autoReconnect, maxReconnects, etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. La ruta de acceso 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 del proyecto de Cloud Spanner.
  • OUTPUT_DIRECTORY: El directorio de salida para los eventos con errores, omitidos o filtrados.