binlogreader
New Contributor II

Sound discussion overall in this thread. Two hard earned lessons that came out of running this in production that I can think of sharing:

(1) Rehearse the cleanup on a scratch table before relying on it: point your reader at a test table, expire snapshots with a deliberately short retention, and see whether your client fails loudly with a missing-file error or quietly serves an older snapshot. The two need different monitoring.
(2) Put your freshness check on the artifact the reader actually consumes, not on the source table. We had an incident where the table was healthy by every platform measure while the derived copy our engine reads had silently stopped refreshing, and nothing on the source side would ever have shown it.