Add the flink-connector-mysql-cdc JAR to the Flink lib directory and create a Flink SQL source table with CONNECTOR='mysql-cdc', hostname, port, username, password, database-name, and table-name options
Set scan.startup.mode='initial' to perform a full snapshot before streaming binlog events, or 'latest-offset' to begin from the current binlog position
Enable schema change capture by setting schema-change.enabled=true (supported in flink-cdc 3.x); captured DDL events are emitted as schema change events on a separate output tag
Set server-id to a unique integer range (e.g., '5400-5404') matching the number of reader parallelism slots to avoid replica ID conflicts with existing MySQL replicas
Configure debezium.snapshot.locking.mode='minimal' to reduce the time the global read lock is held during the initial snapshot on busy tables
Known gotchas
MySQL requires ROW-level binlog format (binlog_format=ROW) and full image logging (binlog_row_image=FULL); column-level binlog images cause incomplete before-image data in update events
The flink-cdc MySQL connector holds a global read lock briefly at snapshot start to determine the binlog position; this blocks all writes on the MySQL instance and can cause application timeouts on high-traffic databases
Flink CDC 3.x pipeline API is a distinct execution model from the Table/SQL API; mixing CDC pipeline YAML definitions with Flink SQL job graphs in the same submission is not supported
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp