HeadlinesBriefing HeadlinesBriefing.com

MySQL CDC vers BigQuery : Binlog vs Synchronisations Périodiques

Hacker News •
×

La plupart des pipelines MySQL vers l'entrepôt de données utilisent des synchronisations basées sur SELECT planifiées qui comparent les lignes actuelles aux instantanés précédents. Cette approche manque les suppressions et les mises à jour intermédiaires entre les exécutions, et impose une charge lourde sur les bases de données de production lors des scans de grandes tables.

La Capture de Données Modifiées (CDC) lit directement depuis le journal binaire (binlog) de MySQL, capturant chaque INSERT, UPDATE et DELETE au fur et à mesure qu'ils se produisent, dans l'ordre, avec l'état complet de la ligne. Un pipeline CDC exécuté toutes les heures est fondamentalement plus fiable qu'une synchronisation par lots exécutée chaque minute, car il capture tout ce qui s'est produit, et non seulement la dernière capture instantanée.

Le CDC via binlog nécessite une configuration spécifique de MySQL : journalisation binaire au format ROW avec des images de ligne complètes (binlog_row_image=FULL), binlog_row_value_options non défini sur PARTIAL_JSON, un utilisateur de réplication avec les privilèges REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD et SHOW DATABASES, un server-id unique pour chaque client de réplication, et une rétention suffisante du binlog pour couvrir les temps d'arrêt (par défaut 30 jours).

Les plateformes gérées comme Erathos gèrent la sélection du mode de snapshot, l'évitement des collisions de server-id et la logique de récupération lorsque les binlogs sont purgés. Une fois que CDC capture correctement les changements, l'atterrissage des données dans BigQuery est simple — chaque événement de changement correspond à une opération sur une ligne. La priorité est donnée à l'exhaustivité plutôt qu'à la vitesse : un pipeline occasionnellement en retard mais jamais erroné vaut mieux qu'un pipeline qui livre à l'heure mais avec des données incomplètes.

Entités clés : Entreprises : Erathos, BigQuery, MySQL

FAQ : Pourquoi le CDC via binlog est-il plus fiable que les synchronisations périodiques basées sur SELECT ?

CDC capture chaque INSERT, UPDATE et DELETE du journal binaire de MySQL dans l'ordre avec l'état complet de la ligne, tandis que les synchronisations périodiques ne voient que l'instantané actuel et manquent les suppressions et les mises à jour intermédiaires entre les exécutions.

Source: Hacker News · Résumé par HeadlinesBriefing