MySQL CDC 新增字段从最新状态启动,之前的这个字段的数据不会同步。这个问题哪个版本可以实现?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 MySQL CDC 中,如果想要同步新增字段之前的数据,需要使用 Flink CDC 版本 2.0 或更高。
在较旧的版本中,Flink CDC 只能从表结构变更之后的最新状态启动,而无法同步新增字段之前的数据。这是因为 Flink CDC 是基于变更日志(CDC Events)来消费数据的,在表结构变更之前,变更日志中不包含新增字段的数据。
从 Flink CDC 2.0 开始,就支持了从变更日志中重建历史数据的功能。通过获取新增字段之前的数据快照,并回放两次变更日志(第一次使用旧的表结构,第二次使用新的表结构),就可以实现同步新增字段之前的数据。
因此,如果您希望解决新增字段之前数据不会同步的问题,建议升级到 Flink CDC 2.0 或更高版本。
结构发生变更(新增字段),Flink CDC 只能从表结构变更之后的最新状态启动,而之前的数据不会被同步。
这是由于 Flink CDC 是基于变更日志(CDC Events)来消费数据的,在表结构变更之前,变更日志中不包含新增后的字段。
Flink CDC 能解决这个问题的版本是:
1.11 版本(当前稳定版本)对新增字段只能从最新状态启动。
2.0 版本(当前 incubating 版本)已经支持从变更日志中重建历史数据,能从表结构变更之前的状态启动,同步之前缺失的字段数据。
所以,如果你的 Flink CDC 版本低于 2.0,目前只能从新增字段后的最新状态启动。
如果要同步新增字段之前的数据,需要升级到 Flink CDC 2.0。
Flink CDC 2.0 在处理新增字段时通过以下方式能重建历史数据:
获取新增字段之前的数据快照(Snapshot)
根据变更日志回放两次,第一次使用旧的表结构(无新增字段),第二次使用新表结构(包含新增字段)
然后再继续基于变更日志进行实时同步
以上方式能重建新增字段之前的数据,解决你提到的问题。
希望以上信息能为你提供参
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。