大家好,我是老徐,初次发文 ,希望不喜勿喷 , 我是90后IT从业爱好者, 喜欢一起探讨技术,和讨论遇到的坑的小伙伴, 可以关注我 ,让我们把更多的坑带给更多的人看到,让别人无坑可踩。
回到正题,问题的由来是这样的, 一次公司排查mysql问题的过程中, 我通过特定的字段值去mysql的日志里查询,当时只是确认这些数据mysql是否接收到 ,经过确认,这些数据确实是接收到了, 但是mysql日志时间和后台服务时间相差很大 ,反复查询 , 我先去看了后台服务器的时间与时区,和mysql服务器的时间与时区,发现都是正确的 。 这时候就懵逼了 ,随即我去mysql官网查看发现官网发文大致是这样的。
This variable was added in MySQL 5.7.2. Before 5.7.2, timestamps in log messages were written using the local system time zone by default, not UTC. If you want the previous log message time zone default, set log_timestamps=SYSTEM.
意思就是说在MySQL 5.7.2 版本以后 ,新增了log_timestamps 参数,此参数的作用在于控制 errorlog 和general_log.log 里记录显示时间的参数。 在MySQL 5.7.2以后 ,mysql 的log_timestamps参数默认为 UTC ,这会导致日志记录中的时间 比中国慢 8个小时,导致排查日志的时候非常不方便。
![0a20fddab28428cc5384b842f7dd6eb5.png](https://i-blog.csdnimg.cn/blog_migrate/d4af2be2bab27ae0285f14e57ad8baee.jpeg)
下面老徐来说说如何解决这个文件, 其实非常简单 。
解决的方法有2种 :
1.在mysql终端执行 show global variables like 'log_timestamps';
![4b805d82cdd8c253c4cccfc5fee2398d.png](https://i-blog.csdnimg.cn/blog_migrate/b7d27b102b4156c1af868418f74bc13c.jpeg)
执行完以后我们发现,这个参数的值是UTC。
此时我们来看一下日志时间:
![4fc1749685d16fc0363ee7a2084fe803.png](https://i-blog.csdnimg.cn/blog_migrate/c4004e637f26847438db8851d374020e.jpeg)
下一步我们开始解决问题 就是log_timestamps参数设置为SYSTEM :
set global log_timestamps = SYSTEM ;
![31616f9352155219c77ec6fd6e934709.png](https://i-blog.csdnimg.cn/blog_migrate/c1ed5b62a1db81547aa9f68cd15ac47a.jpeg)
这时候我们发现执行成功,下面我们再来看一下这个参数的值。
show global variables like 'log_timestamps';
![7d8076a4e7ea072f7adfe79ee908b571.png](https://i-blog.csdnimg.cn/blog_migrate/1b2cbf6c4afd19aac3d5ad7c74d8b8fb.jpeg)
此时我们打开日志
![10199d6a403d05b80ffbe94d978d917b.png](https://i-blog.csdnimg.cn/blog_migrate/15c7adcfb7024dc0d87df0208dcd9ae9.jpeg)
发现时间后面 有一个 +08:00的符号,并且时间和中国时间一致。到现在这个问题就解决了。
第二种解决方法:
在安装数据库的时候修改数据库配置文件
vim /etc/my.cnf
![4eb93c845baf7833c6cfe216c5622592.png](https://i-blog.csdnimg.cn/blog_migrate/e7903c704126effafefb9172e7e7dd5a.jpeg)
在配置文件中新增配置:
log_timestamps=SYSTEM
![cc4b66a2ff128a83dea8b0ee50daa073.png](https://i-blog.csdnimg.cn/blog_migrate/e945cbb347b73bc399adbef5667bb285.jpeg)
保存,退出! 并且重启数据库, 到此解决问题。