如何解决Flink CDC同步时间类型字段8小时时间差的问题,以MySQL为例

在使用Flink CDC进行数据同步时,默认情况下经常会遇到时间类型的字段与实际值相差8个小时的问题。本文以MySQL为例提供解决方案,其他数据源也可以参考这类实现。

原文链接:

https://mp.weixin.qq.com/s/_f41ES8UquM-kj3Ie8JU_g

1. 设置server时区

比如MySQL服务的时区为UTC时间,可以参考以下code设置时区。

复制代码
MySqlSource<String> mySqlSource = MySqlSource.<String>builder()
.hostname(${hostName})
.port(${port})
.databaseList(${dbList})
.tableList(${tableList})
.username(${userName})
.password(${dbPwd}) 
.scanNewlyAddedTableEnabled(${true})
.serverTimeZone("UTC")
.serverId(${serverID})
.startupOptions(${startupOptions})
.includeSchemaChanges(${includeSchemaChanges})
.debeziumProperties(${debeziumProperties})
.deserializer(new JsonDebeziumDeserializationSchema(false, decimalConfigs)).build();

2. 指定Debezium Time Converter

Flink CDC/Debezium官方有一个Time Converter自定义实现

MysqlDebeziumTimeConverter,可以在配置Debezium properties时进行指定来解决时间字段时间差的问题。

参考如下code进行配置:

复制代码
String dateFormat = "yyyy-MM-dd";
String timeFormat = "HH:mm:ss";
String datetimeFormat = "yyyy-MM-dd HH:mm:ss";
String timestampFormat = "yyyy-MM-dd HH:mm:ss";
Properties debeziumProperties = new Properties();
debeziumProperties.setProperty(converters,"mysqlTimeConverters");
debeziumProperties.setProperty("mysqlTimeConverters.type","io.debezium.connector.mysql.converters.MysqlDebeziumTimeConverter");
debeziumProperties.setProperty("mysqlTimeConverters.format.timezone",timezone);
debeziumProperties.setProperty("mysqlTimeConverters.format.date",dateFormat);
debeziumProperties.setProperty("mysqlTimeConverters.format.time",timeFormat);
debeziumProperties.setProperty("mysqlTimeConverters.format.datetime",datetimeFormat);
debeziumProperties.setProperty("mysqlTimeConverters.format.timestamp",timestampFormat);

io.debezium.connector.mysql.converters.MysqlDebeziumTimeConverter源码实现片段。

如果我们需要自定义一个Converter,可以通过继承CustomConverter实现对应的方法即可,然后通过参考MysqlDebeziumTimeConverter的实现可以解决很多数据源比如SQL Server,PG等时间字段数据出现时间差的问题。

原文链接:

https://mp.weixin.qq.com/s/_f41ES8UquM-kj3Ie8JU_g

相关推荐
武子康2 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康3 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长4 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城4 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
中烟创新4 天前
灯塔AI智能体获评“2025-2026中国数智科技年度十大创新力产品”
大数据·人工智能·科技