使用flink cdc同步数据,当一个表进行了表结构变更,我这边做了flink cdc重启之后就会出现
Caused by: org.apache.kafka.connect.errors.ConnectException: Data row is smaller than a column index, internal schema representation is probably out of sync with real database schema
除了修改成 latest,还有其他办法解决嘛?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,Flink CDC 在同步数据时,当表结构发生变更后,重启 Flink CDC 作业时出现了以下异常:
Caused by: org.apache.kafka.connect.errors.ConnectException: Data row is smaller than a column index, internal schema representation is probably out of sync with real database schema
该问题的核心原因是 Flink CDC 的内部 Schema 表示与实际数据库的 Schema 不一致。这种不一致通常发生在表结构变更后,Flink CDC 未能正确感知或同步新的 Schema。
除了将 Flink CDC 的启动模式修改为 latest
(即从最新的 Binlog 位置开始读取)外,以下是其他可行的解决方案:
引用资料
CREATE TABLE IF NOT EXISTS sink_table
WITH (
'connector' = 'hologres',
'mutatetype' = 'insertorupdate',
'lenient-mode' = 'true' -- 开启宽容模式
)
AS TABLE source_table;
引用资料
log_bin = ON
binlog_format = ROW
binlog_row_image = FULL
引用资料
引用资料
引用资料
以上方法可以根据具体场景选择使用。如果希望避免数据丢失,推荐优先尝试 启用宽容模式 或 检查 Binlog 配置。如果问题依然存在,可以考虑 升级 Flink CDC 版本 或 手动调整下游表结构。
如有进一步问题,请提供更多上下文信息(如 Flink CDC 版本、上下游数据库类型等),以便更精准地定位问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。