¿Cómo puedo mover datos de MySQL a BigQuery?
martes, 21 de abril de 2020
En un mercado en el que las estadísticas de transmisiones son cada vez más populares, es fundamental optimizar el procesamiento de datos para poder reducir costos y garantizar la calidad y la integridad de datos. Un enfoque consiste en centrarse en trabajar solamente con los datos que cambiaron, en lugar de con todos los que hay disponibles. Aquí es donde sirve la captura de datos de cambio (CDC). La CDC es una técnica que permite este enfoque optimizado.
Los que trabajamos en Dataflow, el servicio de procesamiento de datos en transmisión de Google Cloud, desarrollamos una solución de muestra que permite transferir un flujo de datos cambiados provenientes de cualquier tipo de base de datos MySQL en versiones 5.6 y posteriores (autoadministrada, local, etc.), y sincronizarlo con un conjunto de datos en BigQuery. Esta solución está disponible dentro del repositorio público de plantillas de Dataflow. Puedes encontrar instrucciones para usar la plantilla en la sección README del repositorio de GitHub.
La CDC proporciona una representación de los datos que cambiaron en una transmisión, lo que permite que los cálculos y el procesamiento se centren específicamente en los registros cambiados. Se puede aplicar la CDC para muchos casos de uso. Algunos ejemplos incluyen la replicación de una base de datos crítica, la optimización de un trabajo de análisis en tiempo real, la invalidación de la memoria caché, la sincronización entre un almacén de datos transaccionales y otro de tipo almacén, y mucho más.
Esta solución se basa en Debezium, una excelente herramienta de código abierto para la CDC. Hemos desarrollado un conector configurable basado en esta tecnología que puedes ejecutar de forma local o en tu propio entorno de Kubernetes para enviar los datos de los cambios a Pub/Sub.
Los que trabajamos en Dataflow, el servicio de procesamiento de datos en transmisión de Google Cloud, desarrollamos una solución de muestra que permite transferir un flujo de datos cambiados provenientes de cualquier tipo de base de datos MySQL en versiones 5.6 y posteriores (autoadministrada, local, etc.), y sincronizarlo con un conjunto de datos en BigQuery. Esta solución está disponible dentro del repositorio público de plantillas de Dataflow. Puedes encontrar instrucciones para usar la plantilla en la sección README del repositorio de GitHub.
La CDC proporciona una representación de los datos que cambiaron en una transmisión, lo que permite que los cálculos y el procesamiento se centren específicamente en los registros cambiados. Se puede aplicar la CDC para muchos casos de uso. Algunos ejemplos incluyen la replicación de una base de datos crítica, la optimización de un trabajo de análisis en tiempo real, la invalidación de la memoria caché, la sincronización entre un almacén de datos transaccionales y otro de tipo almacén, y mucho más.
Cómo mueve datos de MySQL a BigQuery la solución de CDC de Dataflow
La solución implementada, que se muestra a continuación, funciona con cualquier base de datos MySQL, la cual se supervisa mediante un conector que desarrollamos basado en Debezium. El conector almacena los metadatos de la tabla utilizando Data Catalog (el servicio de administración de metadatos escalable de Google Cloud) y envía las actualizaciones a Pub/Sub (tecnología de transferencia de transmisiones y mensajería de Google Cloud). Luego, una canalización de datos toma esas actualizaciones de Pub/Sub y sincroniza la base de datos MySQL con un conjunto de datos de BigQuery.Esta solución se basa en Debezium, una excelente herramienta de código abierto para la CDC. Hemos desarrollado un conector configurable basado en esta tecnología que puedes ejecutar de forma local o en tu propio entorno de Kubernetes para enviar los datos de los cambios a Pub/Sub.
Cómo usar la solución de CDC de Dataflow
Implementar la solución consiste en cuatro pasos:- Implementar tu base de datos (no debes hacer nada aquí si ya tienes una)
- Crear temas de Pub/Sub para cada una de las tablas que quieras exportar
- Implementar nuestro conector basado en Debezium
- Iniciar la canalización de Dataflow para consumir los datos de Pub/Sub y sincronizarlos con BigQuery
Una vez que tengas la base de datos y los temas de Pub/Sub, ejecuta el conector de Debezium. El conector puede funcionar en muchos entornos: compilado localmente desde la fuente, a través de un contenedor de Docker o en un clúster de Kubernetes. Para obtener instrucciones sobre el funcionamiento del conector de Debezium y la solución en general, consulta la sección README.
Una vez que el conector de Debezium empiece a ejecutarse y a capturar los cambios de MySQL, los enviará a Pub/Sub. Usando Data Catalog, también actualizará los esquemas del tema de Pub/Sub correspondiente a cada tabla de MySQL.
Una vez que tengas todo listo, podrás lanzar la canalización de Dataflow para consumir los datos de cambio de Pub/Sub y sincronizarlos con las tablas de BigQuery. Se puede lanzar el trabajo de Dataflow desde la línea de comandos. Una vez que lo lances, verás lo siguiente:

Una vez que se estén ejecutando el conector y la canalización, solo necesitarás supervisar su progreso y asegurarte de que todo esté funcionando correctamente.
Al equipo de Google Cloud le complace implementar la CDC como una técnica increíblemente valiosa para optimizar el análisis de datos de transmisión. Esperamos ver qué desarrollas con estas nuevas capacidades para Dataflow y recibir comentarios al respecto.
Comienza hoy
¿Tienes un caso de uso que se alinee con las capacidades de CDC de Dataflow? Por ejemplo, la optimización de un trabajo de análisis en tiempo real ya existente. En ese caso, ¡no te quedes atrás! Primero, usa este código para empezar a compilar tu primera canalización de CDC en Dataflow ahora mismo. Luego, comparte tus comentarios con el equipo de Dataflow en el registro de errores de GitHub.Al equipo de Google Cloud le complace implementar la CDC como una técnica increíblemente valiosa para optimizar el análisis de datos de transmisión. Esperamos ver qué desarrollas con estas nuevas capacidades para Dataflow y recibir comentarios al respecto.