开发者社区> 问答> 正文

flink sql cdc数据同步至mysql怎么做?

flink 1.12的jdbc connector不支持 sink.parallism 参数,是不是说只能和上游cdc connector保持相同的并行度1?如果是的话,下游sink会有瓶颈,因为表中存有大量的历史数据,将存量数据同步到目标表需要花费不少时间,而新的业务数据也源源不断进来,导致追不上。这要如何解决? flink 1.13的jdbc connector新增 sink.parallism 参数,问题是如果增大并行度的话能否确保同一个主键记录发到同一个sink task呢?SQL正确的写法是什么?

*来自志愿者整理的flink邮件归档

展开
收起
moonlightdisco 2021-12-02 14:06:41 1637 0
1 条回答
写回答
取消 提交回答
  • 试着回答下这两个问题。是的,关键问题是cdc connector为了保证数据一致性只能单并发,所以作业也只能单并发。这个需要cdc connector支持多并发读取,下游sink自然就能解决。这个不仅在同步场景,在其他场景也需要注意 sink.parallism这个参数的使用,目前框架没有保证同一个pk的记录发送到同一个task,需要用户自己保证 sink 上定义的pk 和上游数据shuffle的key(比如 group key, join key)保持一致,

    否则可能导致数据乱序。 这个社区也在从 plan 推导上并解决,可以参考 https://issues.apache.org/jira/browse/FLINK-20374 https://issues.apache.org/jira/browse/FLINK-20374 https://issues.apache.org/jira/browse/FLINK-22901 https://issues.apache.org/jira/browse/FLINK-22901*来自志愿者整理的FLINK邮件归档

    2021-12-02 14:32:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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

相关镜像