MySQLlogging与NOW()不同的时间

MySQL服务器使用与系统或mysql本身不同的时间logging条目:

mysql> select @@global.time_zone; +--------------------+ | @@global.time_zone | +--------------------+ | SYSTEM | +--------------------+ mysql> select NOW(); +---------------------+ | NOW() | +---------------------+ | 2016-02-24 10:47:30 | +---------------------+ # /var/log/mysql/mysql_queries.log 2016-02-24T18:47:11.191126Z 2 Connect root@localhost on using Socket 2016-02-24T18:47:11.191421Z 2 Query select @@version_comment limit 1 2016-02-24T18:47:16.769493Z 2 Query select @@global.time_zone 2016-02-24T18:47:30.503214Z 2 Query select NOW() 

时间戳似乎与日志同步:

 mysql> show variables; timestamp | 1456339753.062182 # 18:47 log_timestamps | UTC 

解决scheme非常简单:查看variables并尝试find相关的:

 log_timestamps | UTC 

所以我把它改成'SYSTEM':

 mysql> SET GLOBAL log_timestamps = 'SYSTEM'; # /var/log/mysql/mysql_queries.log 2016-02-24T18:54:23.837289Z 2 Query SET GLOBAL log_timestamps = 'SYSTEM' 2016-02-24T10:54:25.949232-08:00 2 Query show variables 

日志中的时间应该从18:54切换到10:54。

从MySQL文档 :

  • log_timestamps

此variables控制错误日志消息的时间戳时区 ,以及写入文件的常规查询日志和慢速查询日志消息 。 它不会影响写入表(mysql.general_log,mysql.slow_log)的一般查询日志和慢查询日志消息的时区。 从这些表中检索的行可以使用CONVERT_TZ()或通过设置会话time_zone系统variables从本地系统时区转换到任何所需的时区。