MySQL 服务器记录的条目的时间与系统或 mysql 本身的时间不同:
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
答案1
解决方案非常简单:查看变量并尝试找到相关变量:
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.general_log、mysql.slow_log)的通用查询日志和慢查询日志消息的时区。可以使用 CONVERT_TZ() 或通过设置会话 time_zone 系统变量将从这些表中检索的行从本地系统时区转换为任何所需的时区。
答案2
如果您希望在 mysql 重新启动或重启后保持更改持久,请将其放入您的 my.cnf 文件中:
log_timestamps = 'SYSTEM'