一使用插件版本
flinkcdc版本:2.4.2
mysql版本:5.7
二问题现象
mysql时区设置为东八时区,MysqlSource设置时区为UTC+8或者Shanghai后读取mysql数据,读取到的时间类型的数据比mysql存储的数据多8小时
三问题原因
flinkcdc的时间类型转long类型毫秒时间戳会调用的toEpochMillis方法,该方法中传入的时区固定为UTC,UTC时区为+0
四问题验证
在程序运行到该代码时debug,传递时区为+8,得出的结果与mysql存储数据一致
五问题解决
1 修改flinkcdc中的源码
我不会
2 在MysqlSource中重写deserializer传递的类
重写DebeziumDeserializationSchema,手动判断后,将时间戳减去8小时