Root cause
MySQL binlog_format is STATEMENT or MIXED. Debezium requires ROW-level binary logging to capture individual row changes with full before/after images.
How to fix
- Set in my.cnf and restart MySQL: binlog_format=ROW and binlog_row_image=FULL
- Or set dynamically (takes effect for new connections):
SET GLOBAL binlog_format = 'ROW'; - On RDS: modify the parameter group — binlog_format cannot be set dynamically on RDS.
- On RDS: enable automated backups or read replicas to activate binlog.
Official Debezium documentation ↗