首页/数据/数据工程与 ETL 速查/Flink SQL 声明 MySQL CDC 源表
CDC 与同步53 条

Flink SQL 声明 MySQL CDC 源表

connector=mysql-cdc 的源表需要 hostname/port/username/password/database-name/table-name 六项基础配置,主键必须声明为 PRIMARY KEY NOT ENFORCED(增量阶段依赖它做 upsert 与去重);server-time-zone 与源库一致可避免时间列整体偏移。

完整示例

完整示例
CREATE TABLE orders (
  order_id   BIGINT,
  user_id    BIGINT,
  amount     DECIMAL(12,2),
  status     STRING,
  created_at TIMESTAMP(3),
  PRIMARY KEY (order_id) NOT ENFORCED
) WITH (
  'connector'        = 'mysql-cdc',
  'hostname'         = '10.0.0.5',
  'port'             = '3306',
  'username'         = 'cdc_ro',
  'password'         = '***',
  'database-name'    = 'app',
  'table-name'       = 'orders',
  'server-time-zone' = 'Asia/Shanghai'
);
不设 server-time-zone 时 TIMESTAMP 列常见整体偏移 8 小时,联调先把时间列对一遍。

易错点

  • 主键忘了声明 NOT ENFORCED,增量阶段报错或无法 upsert
  • 首启快照的 chunk 切分过大,高峰期直接拉高源库读压力

数据来源与参考

  • Flink CDC 官方文档(MySQL CDC Connector:SQL 示例与参数)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌