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
解決策は非常に簡単でした。変数を調べて、関連するものを見つけてください。
log_timestamps | UTC
だから私はそれを「システム」に変更しました:
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に切り替わりました。
- log_timestamps
この変数は、エラーログメッセージのタイムスタンプタイムゾーン、および書き込まれた一般クエリログとスロークエリログメッセージのを制御しますファイルへ。テーブル(mysql.general_log、mysql.slow_log)に書き込まれる一般的なクエリログおよび低速クエリログメッセージのタイムゾーンには影響しません。これらのテーブルから取得された行は、CONVERT_TZ()を使用するか、セッションtime_zoneシステム変数を設定することにより、ローカルシステムのタイムゾーンから任意のタイムゾーンに変換できます。
Mysqlの再起動または再起動後も変更を永続的に維持する場合は、これをmy.cnfファイルに入れます。
log_timestamps = 'SYSTEM'