MySQL CDC to BigQuery: what periodic syncs miss, and how binlog avoids it
gpaulbagetti
27 points
9 comments
August 25, 2026
Related Discussions
Found 5 related stories in 57.1ms across 4,390 title embeddings via pgvector HNSW
- How We Pushed CDC into Postgres craigkerstiens · 135 pts · August 10, 2026 · 48% similar
- How to ship a database every day cbrewster · 14 pts · August 14, 2026 · 44% similar
- How to ship a database every day tarunnnp · 67 pts · August 17, 2026 · 44% similar
- SQLite in Production: Optimizing WAL Mode, Concurrency, and VFS Layers ankitg12 · 238 pts · July 29, 2026 · 42% similar
- Making Postgres queues scale KraftyOne · 110 pts · July 30, 2026 · 41% similar
Discussion Highlights (2 comments)
gpaulbagetti
Wrote this after seeing the same failure mode too many times: a MySQL sync job that looks fine in the dashboard but has been silently dropping deletes and intermediate updates for months, because it's comparing snapshots instead of reading the binlog. Tried to lay out exactly what has to be true on the MySQL side (row image, binlog_row_value_options, server-id, retention) for CDC to actually be complete, not just "eventually consistent." Happy to go deeper on any of it in the comments.
karakanb
Disclaimer: I am cofounder of Bruin ( https://github.com/bruin-data/bruin ), we are a competitor to Erathos. It seems like a relatively straightforward marketing article. I was pleasantly surprised to learn about Erathos though, nice product! I am personally not a big fan of CDC in prod. Streaming data movement is generally prone to confusion, and it feeds into bad data patterns like hard deletes without any audit logs, no timestamps on updates or deletes, etc. which are usually the reason why batch loads cannot be utilized. They require a decent operational understanding of the underlying database, and have some gotchas like the Erathos folks mentioned in the article. We offer CDC both in our cloud platform, as well our open-source tools, but if I could, I would always pick an incremental batch load with a cursor value over a CDC connection. I understand it is sometimes required due to organizational complexity or legacy database reasons, mine is just a personal preference. If anyone is looking for an open-source CDC tool that runs as a standalone Go CLI, check out ingestr: https://github.com/bruin-data/ingestr