mysql新增参数未传异常_每日一坑--------mysql 5.7------log_timestamps参数

大家好,我是老徐,初次发文 ,希望不喜勿喷 , 我是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

下面老徐来说说如何解决这个文件, 其实非常简单 。

解决的方法有2种 :

1.在mysql终端执行 show global variables like 'log_timestamps';

4b805d82cdd8c253c4cccfc5fee2398d.png

执行完以后我们发现,这个参数的值是UTC。

此时我们来看一下日志时间:

4fc1749685d16fc0363ee7a2084fe803.png

下一步我们开始解决问题 就是log_timestamps参数设置为SYSTEM :

set global log_timestamps = SYSTEM ;

31616f9352155219c77ec6fd6e934709.png

这时候我们发现执行成功,下面我们再来看一下这个参数的值。

show global variables like 'log_timestamps';

7d8076a4e7ea072f7adfe79ee908b571.png

此时我们打开日志

10199d6a403d05b80ffbe94d978d917b.png

发现时间后面 有一个 +08:00的符号,并且时间和中国时间一致。到现在这个问题就解决了。

第二种解决方法:

在安装数据库的时候修改数据库配置文件

vim /etc/my.cnf

4eb93c845baf7833c6cfe216c5622592.png

在配置文件中新增配置:

log_timestamps=SYSTEM

cc4b66a2ff128a83dea8b0ee50daa073.png

保存,退出! 并且重启数据库, 到此解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值