MySQL-CDC zu BigQuery: Was periodische Syncs übersehen und wie binlog das löst

MySQL CDC to BigQuery: what periodic syncs miss, and how binlog avoids it

MySQL-CDC zu BigQuery: Was periodische Syncs übersehen und wie binlog das löst

Die meisten MySQL-zu-Data-Warehouse-Pipelines nutzen geplante SELECT-Abfragen, die nur den aktuellen Zustand sehen und Löschungen oder Zwischenstände verpassen. Change Data Capture (CDC) liest stattdessen direkt aus dem binlog von MySQL und erfasst jede Änderung vollständig und in Reihenfolge. Der Artikel erklärt die Voraussetzungen auf MySQL-Seite (ROW-Format, FULL row images, korrekte Privilegien, eindeutige server-id, ausreichende Aufbewahrungsdauer), die Einrichtung und die korrekte Übertragung nach BigQuery. Er zeigt, warum ein CDC-basiertes System selbst bei stündlicher Ausführung zuverlässiger ist als ein Batch-Sync pro Minute, und betont, dass vollständige Daten wichtiger sind als pünktliche Ankunft.

Eine Pipeline, die unvollständige Daten pünktlich liefert, ist schlechter als eine, die gelegentlich ein paar Minuten zu spät kommt, aber niemals falsch liegt.
  1. karakanb

    Haftungsausschluss: Ich bin Mitbegründer von Bruin (https://github.com/bruin-data/bruin), wir sind ein Konkurrent von Erathos.

    Es scheint ein relativ unkomplizierter Marketingartikel zu sein. Ich war jedoch angenehm überrascht, etwas über Erathos zu erfahren, nettes Produkt!

    Ich persönlich bin kein großer Fan von CDC in der Produktion. Daten-Streaming ist im Allgemeinen anfällig für Verwirrung und führt zu schlechten Datenmustern wie harte Löschungen ohne Audit-Logs, keine Zeitstempel bei Updates oder Löschungen usw., was normalerweise der Grund ist, warum Batch-Loads nicht genutzt werden können. Sie erfordern ein gutes operatives Verständnis der zugrunde liegenden Datenbank und haben einige Fallstricke, wie die Erathos-Leute im Artikel erwähnt haben. Wir bieten CDC sowohl in unserer Cloud-Plattform als auch in unseren Open-Source-Tools an, aber wenn ich könnte, würde ich immer einen inkrementellen Batch-Load mit einem Cursor-Wert einer CDC-Verbindung vorziehen.

    Ich verstehe, dass es manchmal aufgrund organisatorischer Komplexität oder Legacy-Datenbankgründen erforderlich ist, aber meins ist nur eine persönliche Präferenz.

    Wenn jemand ein Open-Source-CDC-Tool sucht, das als eigenständiges Go-CLI läuft, schaut euch ingestr an: https://github.com/bruin-data/ingestr

  2. gpaulbagetti

    Habe das geschrieben, nachdem ich dasselbe Fehlermuster zu oft gesehen habe: ein MySQL-Sync-Job, der im Dashboard gut aussieht, aber seit Monaten stillschweigend Löschungen und Zwischenupdates verliert, weil er Snapshots vergleicht, anstatt das Binlog zu lesen. Ich habe versucht, genau darzulegen, was auf der MySQL-Seite wahr sein muss (row image, binlog_row_value_options, server-id, retention), damit CDC tatsächlich vollständig ist, nicht nur "irgendwann konsistent". Gerne gehe ich in den Kommentaren auf jeden Punkt näher ein.

Mehr von diesem Tag

2026-08-25