HeadlinesBriefing HeadlinesBriefing.com

MySQL CDC nach BigQuery: Binlog vs. Periodische Synchronisationen

Hacker News •
×

Die meisten MySQL-zu-Data-Warehouse-Pipelines verwenden geplante SELECT-basierte Synchronisationen, die aktuelle Zeilen mit früheren Snapshots vergleichen. Dieser Ansatz verpasst Löschungen und Zwischenaktualisierungen zwischen den Läufen und belastet die Produktionsdatenbanken während großer Tabellenscans schwer.

Change Data Capture (CDC) liest direkt aus dem Binärlog (Binlog) von MySQL und erfasst jedes INSERT, UPDATE und DELETE beim Auftreten, in der Reihenfolge, mit vollständigem Zeilenstatus. Eine CDC-Pipeline, die stündlich läuft, ist grundlegend zuverlässiger als eine Batch-Synchronisation, die jede Minute läuft, weil sie alles erfasst, was passiert ist, nicht nur den neuesten Snapshot.

CDC über Binlog erfordert eine spezifische MySQL-Konfiguration: Binärprotokollierung im ROW-Format mit vollständigen Zeilenbildern (binlog_row_image=FULL), binlog_row_value_options darf nicht auf PARTIAL_JSON gesetzt sein, ein Replikationsbenutzer mit den Rechten REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD und SHOW DATABASES, eine eindeutige server-id für jeden Replikationsclient und ausreichende Binlog-Aufbewahrung, um Ausfallzeiten abzudecken (standardmäßig 30 Tage).

Verwaltete Plattformen wie Erathos behandeln die Auswahl des Snapshots-Modus, das Vermeiden von server-id-Kollisionen und die Wiederherstellungslogik, wenn Binlogs gelöscht werden. Sobald CDC die Änderungen korrekt erfasst hat, ist das Laden der Daten in BigQuery einfach — jedes Änderungsereignis wird einer Zeilenoperation zugeordnet. Die Priorität liegt auf Vollständigkeit statt Geschwindigkeit: Eine Pipeline, die gelegentlich hinterherhinkt, aber niemals falsch liegt, ist besser als eine, die pünktlich läuft, aber unvollständige Daten liefert.

Wichtige Entitäten: Unternehmen: Erathos, BigQuery, MySQL

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing