MySQL 5.7 日誌時間與系統時間不一致的問題(log_timestamps)

神諭丶發表於2017-10-17

5.7.2後,MySQL加入了一個引數,log_timestamps
這個引數是用於控制error log、general log、slow log日期時區的。
當然,只對log_output=FILE的general log、slow log生效。


那麼如果沒有在5.7的配置檔案中額外設定的情況下,就會出現如下問題:
比如錯誤日誌中的時間不對之類的問題,可以說是十分蛋疼了。

這個引數最坑爹的地方是,預設值為"UTC"
  1. [11:50:57] root@localhost [(none)]> SELECT @@log_timestamps;
  2. +------------------+
  3. | @@log_timestamps |
  4. +------------------+
  5. | UTC              |
  6. +------------------+
  7. 1 row in set (0.00 sec)

而之前的版本預設為本地的系統時區:
  1. 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.

該變數目前為列舉型別,並只支援"UTC"與"SYSTEM",並且可以動態修改:

  1. [11:51:09] root@localhost [(none)]> SET GLOBAL log_timestamps=SYSTEM;   SELECT @@log_timestamps;
  2. Query OK, 0 rows affected (0.00 sec)

  3. +------------------+
  4. | @@log_timestamps |
  5. +------------------+
  6. | SYSTEM           |
  7. +------------------+
  8. 1 row in set (0.00 sec)



雖然不知ORACLE出於什麼考慮要這樣改,但總之先將其改為SYSTEM,並寫在配置檔案裡吧。

寫在配置檔案裡重啟的錯誤日誌效果可以感受一下:
瞬間多續了8個小時。






作者微信公眾號(持續更新)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2146053/,如需轉載,請註明出處,否則將追究法律責任。

相關文章