"Flink CDC中tidb 执行ddl语句后,同步到mysql 生成相应的ddl binlog,flink cdc消费mysql 的binlg时回报这个错。如果是直接在mysql上创建ddl语句flink cdc不会报错,请问有对应的解决办法没?
我现在用的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时就会报错。
"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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版本兼容也很重要
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。