Webサイトのお引越しをしたら、引っ越し先のWebサーバのMySQLのログ日時が9時間ズレていました。
「どこか設定が抜けていたかな?」と思い、タイムゾーンを確認してみます。
ちなみに現在時刻は【2021/5/7 9:50】 です。
【設定抜け候補1】WebサーバのOS(Linux)
1 2 | $ date Sat May 7 09:51:12 JST 2021 |
タイムゾーンは日本(JST)なので問題ありませんでした。
【設定抜け候補2】MySQLのタイムゾーン
MySQLにログインして確認します。
(今回は管理者(root)でログインします。)
1 2 3 4 5 6 7 8 9 10 | # mysql -u root -p (パスワード箇所は省略) mysql> SHOW GLOBAL VARIABLES LIKE '%time_zone'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | JST | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) |
タイムゾーンは日本(JST)・・・・え?ホントにですか?
SQLコマンドで現在日時を確認してみます。
1 2 3 4 5 6 7 | mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2021-05-07 10:25:21 | +---------------------+ 1 row in set (0.00 sec) |
もしかして、、、、何か設定足りない?
調べてみると、「log_timestamps」という設定があるそうな。。。
SQLコマンドで設定を確認すると、、、UTF
1 2 3 4 5 6 7 | mysql> SELECT @@log_timestamps; +------------------+ | @@log_timestamps | +------------------+ | UTC | +------------------+ 1 row in set (0.00 sec) |
こ、これか・・・
ということで、
た~い~さ~く~~~~(対策)
設定ファイルに設定値を追加
「[mysqld]」の下に「log_timestamps=SYSTEM」を追加します。
1 2 3 | #vi /etc/my.cnf [mysqld] log_timestamps=SYSTEM |
再起動して、反映されたか確認します。
1 | systemctl restart mysqld |
か~く~に~ん~~~~(確認)
【確認1】MySQLに設定が反映されているか確認
1 2 3 4 5 6 7 | SELECT @@log_timestamps; +------------------+ | @@log_timestamps | +------------------+ | SYSTEM | +------------------+ 1 row in set (0.00 sec) |
【確認2】実際のログの日時を確認
先ほどのmysqlを再起動したので、ログが残っているはず。
ちなみに現在時刻は【2021/5/7 10:48】 です。
1 2 | 2021-05-07T01:48:46.317650Z 0 [Note] /usr/sbin/mysqld: Shutdown complete 2021-05-07T10:48:46.536423+09:00 0 [Warning] TIMESTAMP with implicit DEFAULT ... |
再起動のタイミングで時間が合いました。
引っ越し完了前に気付いてよかったです。
それにしても。。。。この設定いるのかしら?マイナーアップデート(7.2.18→7.2.20)で導入された設定みたいですが、地味にこ~ま~る~~~。。。