flink cdc消费mysql 的binlg时回报这个错直接在mysql上创建ddl不会,为什么?

"Flink CDC中tidb 执行ddl语句后,同步到mysql 生成相应的ddl binlog,flink cdc消费mysql 的binlg时回报这个错。如果是直接在mysql上创建ddl语句flink cdc不会报错,请问有对应的解决办法没?
6b06f738ee073693d0656dd2defbfb3a.png
我现在用的flink cdc是对接的mysql binlog。我们之前用的业务数据库是mysql,现在正在切换用tidb,但mysql 应用没有停,在tidb中对数据的增删改查和ddl语句创建都会通过tidb自身的同步工具同步到mysql中。经过对比发现,单独通过mysql执行ddl和tidb同步创建语句有差异,tidb同步数据创建的ddl 会在DEFAULT关键字后面加上_UTF8MB4这编码名字符串。例如,这个字段是int类型,默认值为 1,tadi同步过来的ddl语句中的是这样的 DEFAULT _UTF8MB4'1' COMMENT '版本号' ,那么flink cdc 消费到该条binlg时就会报错。
d398688f266eabbd91418a3c9c306fc0.png
"

展开
收起
十一0204 2023-08-09 10:06:15 92 分享 版权
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    Flink CDC消费MySQL binlog报DDL执行错误,可能的原因和解决方法:

    CDC任务只订阅了binlog事件,不直接执行DDL。需要改为先执行DDL再消费。

    MySQL账号权限不足,没有执行DDL的权限。增加账号权限或用root账户测试。

    DDL语句解析错误,查询/表名可能解析有问题。检查CDC元数据和MySQL对象定义一致性。

    MySQL版本兼容问题,binlog事件解析可能有问题。升级MySQL和CDC版本试试。

    DDL操作过程中可能有网络或其他错误导致CDC获取失败。检查网络和MySQL日志。

    一般来说:

    CDC不会主动执行DDL,只消费事件

    检查MySQL账号权限和CDC配置

    DDL语句往往需要用root用户在MySQL端直接执行

    MySQL和CDC版本兼容也很重要

    2023-08-10 22:53:27
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理