MySQL CDC 新增字段从最新状态启动,之前的这个字段的数据不会同步。这个问题哪个版本可以实现?

MySQL CDC 新增字段从最新状态启动,之前的这个字段的数据不会同步。这个问题哪个版本可以实现?

展开
收起
真的很搞笑 2023-07-02 16:53:59 108 分享 版权
2 条回答
写回答
取消 提交回答
  • 在 MySQL CDC 中,如果想要同步新增字段之前的数据,需要使用 Flink CDC 版本 2.0 或更高。

    在较旧的版本中,Flink CDC 只能从表结构变更之后的最新状态启动,而无法同步新增字段之前的数据。这是因为 Flink CDC 是基于变更日志(CDC Events)来消费数据的,在表结构变更之前,变更日志中不包含新增字段的数据。

    从 Flink CDC 2.0 开始,就支持了从变更日志中重建历史数据的功能。通过获取新增字段之前的数据快照,并回放两次变更日志(第一次使用旧的表结构,第二次使用新的表结构),就可以实现同步新增字段之前的数据。

    因此,如果您希望解决新增字段之前数据不会同步的问题,建议升级到 Flink CDC 2.0 或更高版本。

    2023-07-30 12:54:53
    赞同 展开评论
  • 北京阿里云ACE会长

    结构发生变更(新增字段),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)
    根据变更日志回放两次,第一次使用旧的表结构(无新增字段),第二次使用新表结构(包含新增字段)
    然后再继续基于变更日志进行实时同步
    以上方式能重建新增字段之前的数据,解决你提到的问题。
    希望以上信息能为你提供参

    2023-07-30 10:32:22
    赞同 展开评论

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

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