MySQL CDC 新增字段从最新状态启动,之前的这个字段的数据不会同步。这个问题哪个版本可以实现?[阿里云实时计算 Flink版]

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 在 MySQL CDC 中,如果想要同步新增字段之前的数据,需要使用 Flink CDC 版本 2.0 或更高。

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

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

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

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