开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

FlinkCDC的问题,有没有办法 把这些清理的binlog重新拉回来重新消费?

FlinkCDC的问题,我使用cdc2.4进行Mysql同步,当rds的binlog文件被清理,binlog文件被转存至oss后,有没有办法 把这些清理的binlog重新拉回来重新消费?

展开
收起
真的很搞笑 2024-01-01 09:00:58 73 0
3 条回答
写回答
取消 提交回答
  • 不能,重新无状态启动补数据吧 ,此回答整理自钉群“Flink CDC 社区”

    2024-01-02 08:13:38
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    当RDS的binlog文件被清理后,重新拉回来重新消费是不可能的。因为binlog文件一旦被清理,其内容就无法恢复。但是,你可以尝试以下方法来解决这个问题:

    1. 在binlog文件被清理之前,确保你已经完成了对FlinkCDC的消费操作。这样,即使binlog文件被清理,你的数据也不会丢失。

    2. 如果你发现binlog文件被清理后,仍然有部分数据没有消费成功,你可以尝试从MySQL的主库中导出这部分数据,然后手动将其导入到目标库中。

    3. 为了避免这种情况的发生,你可以在RDS的参数设置中调整binlog的保留时间。这样,即使binlog文件被清理,你也可以在一定时间内找回这部分数据。具体操作方法如下:

      • 登录到RDS管理控制台。
      • 选择目标实例。
      • 点击“参数设置”选项卡。
      • 在“系统变量”区域找到expire_logs_days参数,将其值设置为一个较大的数字(例如90),表示保留90天的binlog文件。
      • 点击“保存”按钮,然后重启MySQL实例以使更改生效。
    2024-01-01 13:03:42
    赞同 展开评论 打赏
  • 在Rds的binlog文件被清理并转存至oss后,重新拉取并消费这些已清理的binlog文件是可行的。具体来说,你可以在Flink任务的配置中,将作业设置为从Binlog位点启动,例如:{file=mysql-bin.01, position=40}。如果任务运行一段时间后停止,此时消费到的Binlog位点为{file=mysql-bin.01, position=210}。那么,如果选择全新启动任务,MySQL CDC源表会重新从Binlog位点{file=mysql-bin.01, position=40}开始消费。

    另外,你也可以考虑修改binlog retention配置以实现从头开始消费数据的目标。但需要注意的是,修改此配置可能会对MySQL数据库的性能产生一定影响,因此需要根据具体的业务场景进行权衡和测试。

    2024-01-01 11:01:21
    赞同 展开评论 打赏

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

相关电子书

更多
PolarDB-X 2.0 全局 Binlog 与备份恢复能 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载