Utilización
Para poder hacer uso de la función migration-mysql-to-store en el entorno de Google Cloud Platform, es necesario seguir los siguientes pasos:
-
Desplegar la función
migration-mysql-to-storedel repositorio de GitLab como una nueva Cloud Function identificada como migratemysqltobigquery. -
Definir dentro del entorno de Google Cloud Tasks una nueva cola de tareas jobs-migration, la cual será la encargada de almacenar las tareas encoladas de migración de datos y posteriormente ejecutarlas en un proceso paralelo, donde cada tarea ejecutará la Cloud Function migration-task-processor para procesar los datos de manera incremental.
-
Definir dentro de Cloud Scheduler un nuevo Job migrate-mysql-to-bigquery para que se ejecute cada día a las 02:00 AM (a modo de ejemplo). Será el encargado de publicar un mensaje en el topic Pub/Sub mysql-migration-to-bigquery a la hora programada, enviando el siguiente mensaje:

{
"years_to_migrate": 1,
"months_to_migrate": 6,
"source_tables": ["infracciones", "incidentesHistoricos"],
"destination_tables": ["historico_infracciones", "historico_incidentes"],
"tasks_enqueued_limit": 20,
"filter_columns": ["fechaGPS", "fechaGPS"]
} -
Crear dentro del entorno de Pub/Sub un nuevo Pub/Sub Topic o Tema definido como mysql-migration-to-bigquery, encargado de recibir el mensaje de migración de datos desde el Job. Posteriormente este topic Pub/Sub entrega ese mensaje a la Cloud Function
migratemysqltobigquery, la cual se encuentra suscrita a dicho topic, procesando el mensaje y ejecutando la funciónmigration-mysql-to-storedesplegada desde el repositorio para encolar las tareas en base a los parámetros recibidos. -
La función
migration-mysql-to-storerecibe por parámetros el mensaje Pub/Sub, lo decodifica y comienza el proceso de generación de tareas en base a los valores recibidos. Estas tareas se almacenan en la cola de Cloud Tasks previamente definida, donde luego se ejecutarán en un proceso de procesamiento paralelo. Se puede visualizar el estado de cada tarea encolada en la consola de Cloud Tasks, además de poder visualizar los logs de la funciónmigration-mysql-to-storeen la consola de Cloud Functions.

Flujo de Trabajo
En resumen, el flujo de trabajo completo consiste en:
- Desplegar la función
migration-mysql-to-storecomo una nueva Cloud Function. - Definir una nueva cola de tareas en Cloud Tasks para almacenar las tareas encoladas de migración de datos.
- Definir un Job en Cloud Scheduler para ejecutar la función
migration-mysql-to-storecada día a las 02:00 AM. - Definir un topic Pub/Sub para recibir el mensaje de migración de datos y publicarlo a la cola de Cloud Tasks.
- La función
migration-mysql-to-storerecibe el mensaje de Pub/Sub, lo decodifica y comienza el proceso de generación de tareas en base a los valores recibidos. Estas tareas se almacenan en la cola de Cloud Tasks previamente definida, donde luego se ejecutarán en un proceso de procesamiento paralelo. - Se puede visualizar el estado de cada tarea encolada en la consola de Cloud Tasks, además de poder visualizar los logs de la función
migration-mysql-to-storeen la consola de Cloud Functions.