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

Flink CDC里使用同步mysql数据时 无法指定需要的时区,只能按数据库本身的时区进行设置?

Flink CDC里使用同步mysql数据时 无法指定需要的时区,只能按数据库本身的时区进行设置? 多个实例时区不一致集成到一起的时候咋办 ?是这样 问题在于每个任务获取的时间戳附带时区不一样 很影响下游对数据的统一处理 还得针对不同源的特定时间字段做对应时区转换。我现在在source端无法处理时区问题。 我没法识别同步的表哪些字段是时间戳 应该做时区处理。表太多了。
Caused by: org.apache.flink.table.api.ValidationException: The MySQL server has a timezone offset (28800 seconds ahead of UTC) which does not match the configured timezone UTC. Specify the right server-time-zone to avoid inconsistencies for time-related fields.怎么针对实例进行处理呢 mysql本身的时区不能改 flink cdc的时区配置必须配置的和mysql时区一致 。flink cdc的时区配置可以和mysql时区不一致 ? flinkcdc3.0换成utc就报错Caused by: org.apache.flink.table.api.ValidationException: The MySQL server has a timezone offset (28800 seconds ahead of UTC) which does not match the configured timezone UTC. Specify the right server-time-zone to avoid inconsistencies for time-related fields.。所以问题就来了 当我再接入一个mysql实例时区是UTC时 两个实例同一表 想通的时间戳字段 我不得不针对来源分别做时区转换。

展开
收起
小小鹿鹿鹿 2024-05-07 18:24:52 14 0
1 条回答
写回答
取消 提交回答
  • 建议是一个实例一个同步任务,不要放在一个job。作业失败修复的代价会很大。如果你的上游不统一,那就暂时适配下。也可以写到kafka,然后你统一拉kafka。source只管拉和时区处理,kafka才是你真正的处理层。时区是按照实例的,不是按照表。只需要处理实例就行 mysql ->kafka kafka ->flink-sink。不是。sourcebuilder .set时区就行,默认是utc。86ca342adc9583be72beac779090013b.png是的,mysql不是utc,你现在按照utc来匹配不对的,你要按照mysql的时区来拿数据。28800 seconds 刚好是8小时。4e6a6d31d448e0c34bbe37c8588f715e.png只需要针对下不是utc时区的改下代码就行,最简单也是最好的办法就是上游改时区。此回答来自钉群Flink CDC 社区。

    2024-05-07 19:15:36
    赞同 1 展开评论 打赏

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

相关电子书

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

相关镜像