找回密码
 立即注册
首页 业界区 安全 [Flink/CDC/savepoint] Flink Job 保存点机制

[Flink/CDC/savepoint] Flink Job 保存点机制

荏牌 2025-8-8 16:47:47
Flink Job 保存点的试验总结

试验1
  1. 配置 主流的 mysql cdc 的 startoptions = initial
  2. 停止 Job 时:
  3.     主动勾选:保存到保存点
  4. 停止后:
  5.     保存点: test-flink-runtime/jobs/savepoint/230445/2025-08-08_16-52-18/savepoint-c7115a-4294a042693e/_metadata
  6. 启动时
  7.     主动勾选:从保存点恢复
  8. 启动后
  9.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数( 即使源有数据,只要启动后没有新增的、或 update,就应该会一直为 0 ),而非从停止前的数据开始计数。
  10.     保存点会被自动删除掉
复制代码
试验2
  1. 配置 主流的 mysql cdc 的 startoptions = initial
  2. 停止 Job 时,主动勾选:保存到保存点
  3. 保存点:
  4.     test-flink-runtime/jobs/savepoint/230445/2025-08-08_16-52-18/savepoint-c7115a-4294a042693e/_metadata
  5. 启动时
  6.     不勾选:从保存点恢复
  7. 启动后:
  8.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数(会从0开始消费数据,只要源有数据,就不会一直为0),而非从停止前的数据开始计数。
  9.     保存点会被自动删除掉
复制代码
试验3
  1. 配置 主流的 mysql cdc 的 startoptions = latest
  2. 停止 Job 时:
  3.     主动勾选:保存到保存点
  4. 停止后:
  5.     保存点: test-flink-runtime/jobs/savepoint/230445/2025-08-08_16-52-18/savepoint-c7115a-4294a042693e/_metadata
  6. 启动时
  7.     主动勾选:从保存点恢复
  8. 启动后
  9.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数( 即使源有数据,只要启动后没有新增的、或 update,就应该会一直为 0 ),而非从停止前的数据开始计数。
  10.     保存点会被自动删除掉
复制代码
试验4
  1. 配置 主流的 mysql cdc 的 startoptions = latest
  2. 停止 Job 时,主动勾选:保存到保存点
  3. 保存点:
  4.     test-flink-runtime/jobs/savepoint/230445/2025-08-08_16-52-18/savepoint-c7115a-4294a042693e/_metadata
  5. 启动时
  6.     不勾选:从保存点恢复
  7. 启动后:
  8.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数(即使源有数据,只要启动后没有新增的、或 update,就应该会一直为 0),而非从停止前的数据开始计数。
  9.     保存点会被自动删除掉
复制代码
试验5
  1. 配置 主流的 mysql cdc 的 startoptions = initial
  2. 停止 Job 时,不主动勾选:保存到保存点
  3. 保存点:
  4.     --
  5. 启动时
  6.     [X,没有此选项] 从保存点恢复
  7. 启动后:
  8.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数(会从0开始消费数据,只要源有数据,就不会一直为0),而非从停止前的数据开始计数。
  9.     保存点会被自动删除掉
复制代码
试验6
  1. 配置 主流的 mysql cdc 的 startoptions = latest
  2. 停止 Job 时,不主动勾选:保存到保存点
  3. 保存点:
  4.     --
  5. 启动时
  6.     [X,没有此选项] 从保存点恢复
  7. 启动后:
  8.     各个算子 发送的记录数、接受的记录数:会从 0 开始重新计数(即使源有数据,只要启动后没有新增的、或 update,就应该会一直为 0),而非从停止前的数据开始计数。
  9.     保存点会被自动删除掉
复制代码
FAQ for Flink 保存点机制

Q: Flink 保存点与检查点的关系与区别?


  • Flink中的检查点用于【容错恢复】,而【保存点】则用于【手动维护和升级】,二者在触发方式和使用场景上有显著区别。
  • 检查点(Checkpoint)


  • 定义:检查点是Flink实现容错机制的核心功能,能够周期性地生成作业状态的快照,并将其持久化存储。当Flink程序意外崩溃时,可以从最近的检查点恢复状态,确保作业的准确性和一致性。


  • 触发方式:检查点是自动触发的,通常由Flink的TaskManager定期执行,用户无需干预。可以通过配置设置检查点的时间间隔和模式。


  • 存储格式:检查点的存储格式较轻量级,支持增量存储,适合频繁生成以降低恢复时间。


  • 使用场景:主要用于处理意外失败后的自动恢复,确保作业的连续性和数据的准确性。


  • 保存点(Savepoint)


  • 定义:保存点是通过检查点机制创建的,表示作业状态的完整快照,通常用于手动干预和维护。
  • 触发方式:保存点是用户手动触发的,适用于需要进行作业升级、迁移或A/B测试等场景。用户可以根据需要选择何时创建保存点。
  • 存储格式:保存点以二进制形式存储所有状态数据和元数据,执行速度较慢,但支持在代码升级或并行度变化后恢复。
  • 使用场景:适用于需要人工干预的场景,如作业升级、迁移或进行A/B测试时,确保状态的完整性和可恢复性。


  • 总结


  • 容错 vs 维护:检查点侧重于容错,确保在意外失败后能够快速恢复;而保存点则侧重于维护,允许用户在进行手动操作时保存状态并恢复。
  • 自动 vs 手动:检查点是自动生成的,频率较高;保存点则是手动触发的,适合特定的维护需求。
通过理解这两者的区别,用户可以更有效地管理Flink作业的状态和恢复策略。
X 参考文献

    本文作者:        千千寰宇   
    本文链接:         https://www.cnblogs.com/johnnyzen   
    关于博文:评论和私信会在第一时间回复,或直接私信我。   
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA     许可协议。转载请注明出处!
    日常交流:大数据与软件开发-QQ交流群: 774386015        【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!   

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册