使用 MySQL 的过程当中,会碰到这么一个问题:看错误日志、慢查询日志的时候,时间老是和本地时间对不上,差了 8 个小时,这样分析起来就相对麻烦了一些。mysql
为了方便对于不知道是什么缘由致使日志时间差别,以及不知道如何解决的用户,MySQL 在 5.7.2 版本中新增了一个参数——log_timestamps
,用来解决此问题。sql
看一下官档是如何说的:函数
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.spa
log_timestamps 这个参数主要是控制 error log、slow_log、genera log,等等记录日志的显示时间参数,但不会影响 general log 和 slow log 写到表 (mysql.general_log, mysql.slow_log) 中的显示时间。在查询行的时候,能够使用 CONVERT_TZ() 函数,或者设置会话级别的系统变量 time_zone 来转换成所须要的时区。日志
该参数全局有效,能够被设置的值有:UTC
和 SYSTEM
,默认使用 UTC
。它还支持动态设置,不过建议你们在配置文件中就写上,以避免重启以后形成没必要要的麻烦。code
说了这么多,你们应该也知道如何去解决上面这个问题了。it
log_timestamps 参数默认使用 UTC 时区,这样会使得日志中记录的时间比中国这边的慢了 8 个小时,致使查看日志不方便。修改成 SYSTEM 就能解决问题。io
mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps'; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | log_timestamps | UTC | +----------------+--------+ mysql> SET GLOBAL log_timestamps = SYSTEM; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps'; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | log_timestamps | SYSTEM | +----------------+--------+