数据湖探索 DLI-Flink Opensource SQL从RDS数据库读取的时间和RDS数据库存储的时间为什么会不一致?:根因分析
根因分析
该问题的根因是数据库设置的时区不合理,通常该问题出现时Flink读取的时间和RDS数据库的时间会相差13小时。
请在RDS数据库内执行如下语句
show variables like '%time_zone%'
参数 |
说明 |
---|---|
system_time_zone |
数据库时区。 这里它指向 'SYSTEM',也就是数据库服务器的系统时间('system_time_zone')。而这个系统时间在这里指向 CS T,所以,最终数据库时区才是 CST。 |
time_zone |
数据库所在服务器的时区,服务器是台主机。 如本地数据库所在计算机的默认时区是中国标准时间,则查出来 'system_time_zone' 是 CST。 |
问题根因:在Mysql的time_zone是SYSTEM,system_time_zone是CST的情况下会造成bug。
CST在mysql里被理解为China Standard Time(UTC+8),但在 Java 里被理解为Central Standard Time (USA)(UTC-5)。
Flink taskmanager本质是一个 java 进程,在Mysql 的jdbc驱动的代码里会设置时区,这个时区是通过TimeZone.getTimeZone(canonicalTimezone) 读取的。也就是说,读取的是CST(UTC+8),但真正设置的时区却是CST(UTC-5)。
- 什么是Flink OpenSource SQL_数据湖探索_Flink OpenSource SQL
- 什么是数据湖探索服务_数据湖探索DLI用途与特点
- GaussDB获取时间_gaussdb for MySQL_高斯数据库获取时间_华为云
- 云数据库 GaussDB(for MySQL)与RDS for MySQL的区别
- RDS for MySQL限流_华为云数据库RDS_自治限流_SQL限流
- 什么是弹性资源池_数据湖探索DLI弹性资源池
- RDS for MySQL变更实例的CPU和内存规格_CPU和内存_CPU过高_MySQL内存
- RDS for MySQL数据库实例是什么_创建mysql实例步骤_如何创建RDS for MySQL数据库实例
- RDS for MySQL审计日志_开启日志审计_数据库审计_华为云数据库RDS
- 连接RDS for MySQL数据库_华为云数据库RDS_语法_数据库连接_连接命令