【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

这篇具有很好参考价值的文章主要介绍了【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、背景:

在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下

FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案,Flink实战,flink,大数据

 而数据库中原始数据如下,并没有到下午5点,这就导致了FlinkCDC读出来的时间和数据库中实际的时间不一致的情况,与数据库对比可以发现,这里的时间戳与数据库时间刚好相差了 8 个小时,在实际生产中这种情况是不行的

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案,Flink实战,flink,大数据

2、 产生这种情况的原因是什么呢?

FlinkCDC底层为Debezium,而Debezium默认将MySQL中datetime类型转成UTC的时间戳,底层的 Debezium 并没有实现 serverTimeZone 的配置,时区是写死的无法更改,导致数据库中设置的UTC+8到了FlinkCDC读取出来相差了8个小时

3、如何解决呢

我们可以通过在自定义反序列化器中实现时区的修复,需要提前准备一个mysql,本案例版本为Mysql5.7,并且开启binlog,如何开启binlog过程如下面的博客文章来源地址https://www.toymoban.com/news/detail-733155.html

到了这里,关于【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【已解决】CentOS7等linux系统时区时间不对显示误差8小时

    中国使用的是东八区上海时间,而linux服务器,一般默认是0时区 UTC ,所以需要将时区改为东八区 CST 将时区改为东八区后,显示的实际仍然不对,仍然差8小时或16小时,这说明时间不对 时间修改正确后,服务器重启,时间显示又错误了,因为没改硬件时钟时间 linux系统时间

    2024年02月06日
    浏览(30)
  • MySQL时间分组:按小时统计数据(mysql按小时分组)

    MySQL时间分组是一类涉及MySQL数据库的SQL语句,能够以小时对数据进行分组统计。 比如,如果你想根据一定的时间间隔,把MySQL数据库中的记录分成几组,那么MySQL时间分组技术就派上用场了。 MySQL时间分组主要使用MySQL语句YEAR(), WEEK(), HOUR()和GROUP BY来实现,按小时统计数据实

    2024年02月12日
    浏览(43)
  • Mysql 时区差8小时的多种问题 统统解决

    最近在开发【Java面试 | 笑小枫】小程序,便发现老是有人半夜偷偷刷题,如下图所示: 现在都这么卷了吗?大半夜的都不睡觉了吗?还在撸题~越想越不对,赶紧看了一下,发现自己录入题目的时间也好多都在凌晨。 好家伙,秒懂,时区错了。错就错了吧,影响也不大。 直

    2024年02月05日
    浏览(24)
  • 【时区】Flink JDBC 和CDC时间字段时区 测试及时间基准

    关联文章: 各种时间类型和timezone关系浅析 1. 测试一般的数据库不含time zone的类型的时区。 mysql timestamp(3) 类型 postgres timestamp(3) 类型 sqlserver datetime2(3) 类型 oracle类型 TIMESTAMP(3) 类型 在以下测试之中均为 ts 字段 2.测试CDC中元数据 op_ts 时区 在以下测试中cdc表建表均使用 ts_ms T

    2024年02月06日
    浏览(31)
  • MySQL 获取前24小时每小时数据总数

    1、创建表结构 2、表中填充数据 你可以使用以下 SQL 查询语句来获取 MySQL 数据库中当前前24小时每小时的数据: 这个查询语句会将 data_report 表中过去24小时内每个小时的数据进行统计,并按照小时分组。其中, create_time 是你表中记录创建时间的字段名,你需要将其替换成实

    2024年02月02日
    浏览(28)
  • Flink SQL 时区 -- 时间字符串转时间戳并转换时区

    将时间字符串格式化,转变成时间戳,再加8小时后写入clickhouse (该方法默认精确度为秒,不适用毫秒) (1)UNIX_TIMESTAMP 作用:将时间字符串转换成时间戳 用法:UNIX_TIMESTAMP(STRING datestr, STRING format) (2)CONVERT_TZ 作用:转换时区 用法:CONVERT_TZ(string1, string2, string3) (实测仅获

    2024年02月04日
    浏览(39)
  • 【Flink】 FlinkCDC读取Mysql( DataStream 方式)(带完整源码,直接可使用)

    简介:     FlinkCDC读取Mysql数据源,程序中使用了自定义反序列化器,完整的Flink结构,开箱即用。 本工程提供 1、项目源码及详细注释,简单修改即可用在实际生产代码 2、成功编译截图 3、自己编译过程中可能出现的问题 4、mysql建表语句及测试数据 5、修复FlinkCDC读取Mysql数

    2024年02月07日
    浏览(28)
  • FlinkCDC第三部分-同步mysql到mysql,ctrl就完事~(flink版本1.16.2)

    本文介绍了  来源单表-目标源单表同步,多来源单表-目标源单表同步。 注:1.16版本、1.17版本都可以使用火焰图,生产上最好关闭,详情见文章末尾 Flink版本:1.16.2 环境:Linux CentOS 7.0、jdk1.8 基础文件: flink-1.16.2-bin-scala_2.12.tgz、 flink-connector-jdbc-3.0.0-1.16.jar、(maven仓库目录:

    2024年02月11日
    浏览(33)
  • java获取时间相差8小时的各种情况

    2024年02月22日
    浏览(22)
  • android 获取手机当前时区,解决时间偏移量和夏令时差问题

     //获取当前时区     public static int getTimeZone() {         Date date=new Date();         //取得本地时间         Calendar cal = Calendar.getInstance();         //取得时间偏移量         int offset = cal.get(Calendar.ZONE_OFFSET)/(1000*60*60);         //取得夏令时差         int dstOffset=cal.get(Calenda

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包