LoginSignup
5
9

More than 5 years have passed since last update.

MySQLのバージョンをあげたら、ログ出力される時間がおかしくなった

Last updated at Posted at 2017-01-22

起きたこと

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で
表示されるようになったことを確認。

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9