起きたこと
MySQL5.7にupgradeした際に、errorログ、slowクエリログなど、ログを確認したら、
時間がおかしいこと(utc)になっていた。
確認しても、どこもJSTになっているはず、、
- linuxのdateコマンド
$ date
2017年 1月 21日 月曜日 07:15:37 JST
- mysqlのtimezone設定
mysql> SHOW GLOBAL VARIABLES LIKE '%time_zone';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | JST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.01 sec)
- mysqlのdatetime
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2017-01-21 07:15:37 |
+---------------------+
1 row in set (0.00 sec)
原因は、log_timestamps
mysqlの設定に、log_timestampsという項目が、5.7.2から導入されていた。
こいつによって、ログ出力時のdateは、log_timestampsの設定に依存されてしまう。
そして、デフォルト値がutcになっているため、ログが全てutcになっていた。
mysql> SELECT @@log_timestamps;
+------------------+
| @@log_timestamps |
+------------------+
| UTC |
+------------------+
1 row in set (0.00 sec)
my.cnfで設定値を変更
#/etc/my.cnf
[mysqld]
log_timestamps=SYSTEM
上記のように、SYSTEMに変更してあげることで、
ログ出力時の時刻はOSで設定されている時間を見るようになる。
再起動して、反映を確認
mysql> SELECT @@log_timestamps;
+------------------+
| @@log_timestamps |
+------------------+
| SYSTEM |
+------------------+
1 row in set (0.00 sec)
error.log, slow.log, general.logなど、各種ログファイルがjstで
表示されるようになったことを確認。