Flink CDC 通过 PostgreSQL 的逻辑复制机制实现数据变更捕获。要从某个特定时间戳开始同步,虽然直接基于时间戳并不现实,但可以间接达到类似效果:
使用 LSN(Log Sequence Number):
创建并管理 Replication Slot:
主从切换的影响:
综上所述,尽管 Flink CDC 本身并没有直接支持按照时间戳启动同步的功能,但是结合 PostgreSQL 的逻辑复制特性,通过合理管理和配置 Replication Slot 及其关联的 LSN,可以在一定程度上模拟从特定时间点开始同步。不过,在实际生产环境中,必须充分考虑容灾、数据完整性及主从切换对数据同步的影响,确保采取适当的备份与恢复策略。
使用逻辑复制 slot 以及对应的LSN(Log Sequence Number)来间接达到类似效果。首先,你需要确定想要开始同步的时间点所对应的LSN。
支持不了,PG从原理上就不支持。除非你提前创建一个slot, 这个slot一直不推进消费位点,才能保证日志一直不被删除。这种只能你自己做了,cdc框架做不了, 可以参考这篇文章,
https://www.decodable.co/blog/logical-replication-from-postgres-16-stand-by-servers-part-2-of-2?utm_source=twitter&utm_campaign=blog&utm_term=gm&utm_medium=social&utm_content=postgres-logical-replication-standby-pt2
,自己在另一个备用机维护一个slot进行同步推进offset。后续框架最多加一个从slot指定offset恢复, 前提是这个offset > 这个slot的confirm offset,主要是pg会快速回收已经被confirmed的log,不回收又容易影响存储。此回答来自钉群Flink CDC 社区。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。