Log-basierte CDC (Log-basiertes Change Data Capture) liest Datenänderungen direkt aus dem Transaktionslog der Quelldatenbank — statt per Polling, Trigger oder Zeitstempel-Abfragen. Dadurch erfasst sie jede Änderung inklusive Löschungen mit minimaler Last auf der Quelle.
Wo liegt das Log?
Jede größere Datenbank führt ein Schreib-Log: MySQL den Binary Log (binlog), PostgreSQL das Write-Ahead-Log (WAL) mit logischem Decoding über Replication Slots, SQL Server das Transaktionslog und Oracle den Redo Log. Ein Connector wie Debezium liest diese Logs direkt und übersetzt die Einträge in Ereignisse für einen Message Broker wie Kafka.
Row-basiert statt Statement-basiert
Entscheidend ist das Log-Format: Row-basiert (MySQL binlog_format=ROW) schreibt das Vorher- und Nachher-Bild jeder betroffenen Zeile — genau das braucht CDC. Statement-basiert protokolliert nur die ausgeführte SQL-Anweisung und ist für CDC unbrauchbar, weil sich daraus die geänderten Zeilen nicht zuverlässig ableiten lassen. Viele Systeme nutzen mixed und wechseln automatisch auf ROW, wo es nötig ist.
Vor- und Nachteile
- Vorteile: geringe Zusatzlast (kein Polling, keine Trigger), erfasst Updates und Deletes vollständig, benötigt keine Schema-Änderungen an der Quelle.
- Nachteile: der Connector braucht Lese-Rechte auf die Logs; das Log muss lange genug vorgehalten werden (MySQL-Binlog darf nicht zu früh gelöscht werden); der Einstieg erfolgt über einen Snapshot-then-Stream-Lauf.
Verwandte Grundlagen: Transactional Outbox, Change Data Capture, Datenbank-Replikation.