最近发现很多人对MySQL错误日志和慢日志中打印的时间疑问比较大,操作系统和数据库配置的时区是正确的,为什么错误日志和慢日志中的时区显示慢了8个小时?
一、问题原因
首先把问题原因说清楚,然后再详细介绍下MySQL涉及时区配置的参数。
原因是因为MySQL控制error 、slow、general日志中输出的时区控制参数是使用单独的参数控制,由log_timestamps参数控制且该参数默认值为UTC;
如果该参数没有配置,使用UTC时区那么打印的日志中的时间就会比北京时间(CST)慢8个小时;所以这就是为什么经常有人疑惑,操作系统和数据库中查询出的时间都没有问题,但错误日志、慢日志中打印的时间就是比北京时间慢了8个小时的原因。
二、MySQL时区配置参数
MySQL数据库时区由system_time_zone、default_time_zone、time_zone、log_timestamps 参数来控制,log_timestamps参数已经了解为专控制error 、slow、general日志中输出的时区;那么其他的参数又是控制的哪些时间中时区输出的呢?
2.1 system_time_zone
服务器系统时区。服务器启动时如果没有显示配置会使用服务器的时区默认配置,该设置被用于运行服务器的账户环境或启动脚本修改;建议显示配置为本地时区。
2.2 default_time_zone 和time_zone
default_time_zone 为服务器启动参数配置,用来配置time_zone;如果未指定,使用系统默认配置(和system_time_zone保持一致)
time_zone服务器配置参数,用来配置服务器时区,同时每个连接的客户端初始化时区;默认值为system(即和system_timne_zone保持一致)。
time_zone建议显示配置为指定时区,如果设置为 SYSTEM
,则每个需要进行时区计算的 MySQL 函数调用都会调用系统库来确定当前系统时区。此调用可能受全局互斥锁保护,从而导致争用。
三、问题总结
在设置数据库时区的时候,建议将时区参数配置为指定的时区,同时别忘了将日志的输出时区参数设置为指定时区。
防止不了解的人对错误日志和慢日志的输出时间产生质疑。

優(yōu)網(wǎng)科技秉承"專業(yè)團(tuán)隊(duì)、品質(zhì)服務(wù)" 的經(jīng)營理念,誠信務(wù)實(shí)的服務(wù)了近萬家客戶,成為眾多世界500強(qiáng)、集團(tuán)和上市公司的長期合作伙伴!
優(yōu)網(wǎng)科技成立于2001年,擅長網(wǎng)站建設(shè)、網(wǎng)站與各類業(yè)務(wù)系統(tǒng)深度整合,致力于提供完善的企業(yè)互聯(lián)網(wǎng)解決方案。優(yōu)網(wǎng)科技提供PC端網(wǎng)站建設(shè)(品牌展示型、官方門戶型、營銷商務(wù)型、電子商務(wù)型、信息門戶型、微信小程序定制開發(fā)、移動端應(yīng)用(手機(jī)站、APP開發(fā))、微信定制開發(fā)(微信官網(wǎng)、微信商城、企業(yè)微信)等一系列互聯(lián)網(wǎng)應(yīng)用服務(wù)。