问题现象:MySQL日志记录时间和系统时间不一致mysql
当前系统时间sql
[root@bogon data]# date Wed Nov 16 14:48:31 CST 2016 You have new mail in /var/spool/mail/root
MySQL显示时间session
root@localhost [(none)]>select now(); +---------------------+ | now() | +---------------------+ | 2016-11-16 14:52:05 | +---------------------+ 1 row in set (0.00 sec)
日志显示时间socket
[root@bogon data]# /etc/init.d/mysqld start Starting MySQL.... SUCCESS! You have new mail in /var/spool/mail/root [root@bogon data]# tailf error.log 2016-11-16T06:49:38.202954Z 0 [Note] InnoDB: Loading buffer pool(s) from /data/mysql/mysql3306/data/ib_buffer_pool 2016-11-16T06:49:38.440257Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2016-11-16T06:49:38.440314Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 2016-11-16T06:49:38.440426Z 0 [Note] IPv6 is available. 2016-11-16T06:49:38.440443Z 0 [Note] - '::' resolves to '::'; 2016-11-16T06:49:38.440471Z 0 [Note] Server socket created on IP: '::'. 2016-11-16T06:49:38.627893Z 0 [Note] InnoDB: Buffer pool(s) load completed at 161116 14:49:38 2016-11-16T06:49:38.871533Z 0 [Note] Event Scheduler: Loaded 0 events 2016-11-16T06:49:38.871938Z 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.7.14-log' socket: '/tmp/mysql3306.sock' port: 3306 MySQL Community Server (GPL)
问题缘由:日志
看看官方的解释吧code
log_timestamps Introduced 5.7.2 Command-Line Format --log_timestamps=# System Variable Name log_timestamps Variable Scope Global Dynamic Variable Yes Permitted Values Type enumeration Default UTC Valid Values UTC SYSTEM This variable controls the timestamp time zone of error log messages, and of general query log and slow query log messages written to files. It does not affect the time zone of general query log and slow query log messages written to tables (mysql.general_log, mysql.slow_log). Rows retrieved from those tables can be converted from the local system time zone to any desired time zone with CONVERT_TZ() or by setting the session time_zone system variable. Permitted log_timestamps values are UTC (the default) and SYSTEM (local system time zone). Timestamps are written using ISO 8601 / RFC 3339 format: YYYY-MM-DDThh:mm:ss.uuuuuu plus a tail value of Z signifying Zulu time (UTC) or ±hh:mm (an offset from UTC). 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.
大概意思是这样的,这个参数是5.7.2引进来的,主要控制记录日志的时间戳,不影响general log和slow log写表。orm
解决办法:server
它的默认设置是UTC,若是你想改变默认设置,set log_timestamps=SYSTEM就能够了。注意这个变量的做用域是global作用域
root@localhost [(none)]>SHOW GLOBAL VARIABLES LIKE 'log_timestamps'; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 3 Current database: *** NONE *** +----------------+-------+ | Variable_name | Value | +----------------+-------+ | log_timestamps | UTC | +----------------+-------+ 1 row in set (0.01 sec) root@localhost [(none)]>set global log_timestamps=SYSTEM; Query OK, 0 rows affected (0.00 sec) root@localhost [(none)]>SHOW GLOBAL VARIABLES LIKE 'log_timestamps'; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | log_timestamps | SYSTEM | +----------------+--------+ 1 row in set (0.00 sec)