La mayoría de las tuberías de MySQL a almacén de datos utilizan sincronizaciones basadas en SELECT programadas que comparan las filas actuales con instantáneas anteriores. Este enfoque pierde eliminaciones y actualizaciones intermedias entre ejecuciones, y genera una carga pesada en las bases de datos de producción durante los escaneos de tablas grandes.
La Captura de Datos de Cambio (CDC) lee directamente desde el registro binario (binlog) de MySQL, capturando cada INSERT, UPDATE y DELETE a medida que ocurre, en orden, con el estado completo de la fila. Una tubería de CDC que se ejecuta cada hora es fundamentalmente más confiable que una sincronización por lotes que se ejecuta cada minuto, porque captura todo lo que sucedió, no solo la instantánea más reciente.
CDC mediante binlog requiere una configuración específica de MySQL: registro binario en formato ROW con imágenes de fila completas (binlog_row_image=FULL), binlog_row_value_options no establecido en PARTIAL_JSON, un usuario de replicación con privilegios REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD y SHOW DATABASES, un server-id único para cada cliente de replicación, y suficiente retención de binlog para cubrir el tiempo de inactividad (predeterminado 30 días).
Plataformas gestionadas como Erathos manejan la selección del modo de instantánea, la evitación de colisiones de server-id y la lógica de recuperación cuando se purguean los binlogs. Una vez que CDC captura los cambios correctamente, aterrizar los datos en BigQuery es sencillo — cada evento de cambio se asigna a una operación de fila. La prioridad es la completitud sobre la velocidad: una tubería que ocasionalmente se retrasa pero nunca está equivocada supera a una que aterriza datos incompletos a tiempo.
Entidades clave: Empresas: Erathos, BigQuery, MySQL
Fuente: Hacker News · Resumido por HeadlinesBriefing