mysql日志打印时间与系统时间差8h--------坑爹参数log_timestamps

最近在玩docker,轻量级的操作真是棒棒哒,恨不得所有软件都装上去,想重启就重启想删就删,想下载就下来,而且速度还很快。可是我在拉下来mysql5.7的镜像后,启动时发现2个小问题:

  • 我用sqlyog工具连上容器的mysql时,select now();发现时间比当前时间晚8h。
  • mysql启动日志时间比当前时间晚8个小时。

很明显当前时间是东八区,是CST时间,mysql是UTC时间
一开始我以为两个问题其实是一个问题,因为docker镜像默认是没有时区也就是UTC时间,所以我想或许在启动mysql镜像时候指定时区就好了:

-e TZ="Asia/Shanghai"

然后删掉容器重新启动后发现第一个问题解决了,但是坑爹的是第二个问题依然还在,一开始我还以为docker容器的时间没生效,于是我进入容器内部:

docker exec -it mysql /bin/bash
date -R
Fri, 05 Jul 2019 09:24:54 +0800

发现容器内部的时间已经正确了,mysql的时间也正确了,可偏偏mysql的日志时间就是不对。于是我就想或许一开始就想的太简单,两者不是一个问题,select now();获取的是系统时间,所以只要容器时间改对了,mysql时间自然也对了。或许日志打印时间是另算的,不按照系统时间来,至少默认不是按照系统时间来而是按照UTC时间,所以我去度娘找了找mysql5.7设置日志输出时间的配置,还真特么让我找到了,废话不多说,因为我启动容器时候把mysql的配置和数据都挂载出来了,于是我把挂载出来的配置文件加上修改日志打印时间的配置:

vim /usr/local/docker/mysql/config/mysqld.cnf 
log_timestamps=SYSTEM

删掉容器重启就ok了

猜你喜欢

转载自blog.csdn.net/eumenides_/article/details/94719944