MySQL CDC Source Configuration
Use this page when MySQL is the source for a CDC workflow.
CDC mode reads changes from the MySQL binary log. It is different from Load mode, which reads tables directly without binlog setup.
If you only need a bounded load, use MySQL Load Mode Guide instead.
For the canonical setup flow, combine this page with:
Check CDC readiness
There are two places in the UI that surface CDC readiness:
Database Overview in Data Explorer — open the database in the sidebar. The CDC readiness card shows whether CDC is enabled along with the current binlog format, row image, and server ID.
Stream wizard — when creating a new stream, the Data Transfer Mode step checks the source automatically. If binlog is not configured for CDC, the Stream (Change Data Capture) option shows a warning and is disabled.
If both show CDC as ready, the source is configured. If not, apply the settings below and restart MySQL.
Required server settings
For a self-managed MySQL instance, add or update these in the MySQL configuration:
[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format = row
binlog_row_image = full
binlog_checksum = none
expire_logs_days = 3
| Setting | Purpose |
|---|---|
server_id | Unique identifier for replication. Each replica client needs a distinct value. |
log_bin | Enables the binary log. |
binlog_format | Must be ROW — statement-based or mixed logging is not supported. |
binlog_row_image | Must be FULL — partial row images can miss column values. |
binlog_checksum | Set to NONE to avoid checksum-related parsing issues. |
expire_logs_days | Binlog retention period. Set high enough that the stream can start before logs are purged. On MySQL 8.0+, use binlog_expire_logs_seconds instead. |
Restart MySQL after changing these settings.
Required privileges
The CDC user needs SELECT for reading table metadata and REPLICATION CLIENT + REPLICATION SLAVE for consuming the binlog:
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'cdc_user'@'%';
FLUSH PRIVILEGES;
Verify with:
SHOW GRANTS FOR 'cdc_user'@'%';
Use a dedicated CDC user where practical instead of reusing a broad administrative account.
Cloud-hosted MySQL CDC sources
If the source is provider-managed, use the provider page for network and parameter group setup, then return here for the DBConvert Streams-side CDC requirements:
- Amazon RDS for MySQL Guide
- AWS Aurora MySQL Guide
- Google Cloud SQL Connection Guide
- Azure Database Connection Guide
- DigitalOcean Managed Database Guide
Validation checklist
- Test the MySQL connection from the Data Explorer sidebar (right-click → Test connection) or from the connection editor.
- Open the database in Data Explorer and check the CDC readiness card — it should show enabled with
BINARY LOG: ON,FORMAT: ROW, andROW IMAGE: FULL. - Run
SHOW GRANTSfor the CDC user and confirmREPLICATION CLIENTandREPLICATION SLAVEare granted. - Start with a narrow CDC stream (one or two tables) before scaling to a larger scope.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Stream fails to start with binlog error | log_bin is OFF | Enable binary logging and restart MySQL |
| Events missing column values | binlog_row_image is not FULL | Set to FULL and restart |
| Checksum parse errors | binlog_checksum is not NONE | Set to NONE and restart |
| Permission denied on binlog | CDC user lacks replication privileges | Run the GRANT statement above |
| Stream starts but misses old events | Binlog retention is too short | Increase expire_logs_days or binlog_expire_logs_seconds |
| Provider-managed settings not taking effect | Parameter group change pending reboot | Reboot the instance from the cloud console |
For background on how binlog-based CDC works — trigger vs query vs binlog methods, their trade-offs, and common production pitfalls — see MySQL Change Data Capture: a practical guide.