开发者社区> 问答> 正文

flink cdc程序在挂了重启后如何保证数据一致性

就是flink cdc程序在挂了之后,需要重启,但中间过程中有数据库增删改,如何确保重启后这部分的数据不会丢失呢?

展开
收起
游客r3fnb2lvr3kbs 2023-03-09 10:29:37 1641 0
2 条回答
写回答
取消 提交回答
  • 可以试着在中间加个kafka,重启后,再从消息队列里面读取之前没有处理的数据,当然事务机制和检查点也可以,这样不需要额外增加组件.

    2023-03-09 12:32:12
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    为了确保中间增删改不会丢失,可以使用以下两种方法:

    1、启用事务日志。

    在以下情况下,启用CDC事务日志可以为我们提供更好的数据一致性保障: 1. 程序即使重启,CDC日志也能继续读取还未处理的记录。 2. 若CDC Node 挂机,最近的数据处理以及消息同步状态都可以在重启时自动恢复。 3. 针对 Oracle、MySQL、PostgreSQL 这样的数据库,CDC Node 需要单独开启一个 Transaction,这样 CDC Node 处理记录可以原子性的写入目标数据源(如 HBase)和Sink(如 HDFS)。

    2、设置状态检查点。

    在CDC程序中对中间状态进行保存和恢复,可以使用 Flink 提供的 State Checkpoints 机制。在 Flink 中,Checkpoint 会将整个程序的中间状态,包括状态和数据,异步地定期存储到持久化存储器中。如果程序失败,则使用最新的Checkpoint将状态还原到程序失败前的状态。

    当然,这两个方法都需要你的程序来支持。具体操作可以参考 Flink 文档进行实现。

    2023-03-09 10:35:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载