MySQL 5.7 貼心參數之 log_timestamps

寫在前面

使用 MySQL 的過程當中,會碰到這麼一個問題:看錯誤日誌、慢查詢日誌的時候,時間老是和本地時間對不上,差了 8 個小時,這樣分析起來就相對麻煩了一些。mysql

新改進

爲了方便對於不知道是什麼緣由致使日誌時間差別,以及不知道如何解決的用戶,MySQL 在 5.7.2 版本中新增了一個參數——log_timestamps,用來解決此問題。sql

看一下官檔是如何說的:函數

This variable was added in MySQL 5.7.2. 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.spa

log_timestamps 這個參數主要是控制 error log、slow_log、genera log,等等記錄日誌的顯示時間參數,但不會影響 general log 和 slow log 寫到表 (mysql.general_log, mysql.slow_log) 中的顯示時間。在查詢行的時候,能夠使用 CONVERT_TZ() 函數,或者設置會話級別的系統變量 time_zone 來轉換成所須要的時區。日誌

該參數全局有效,能夠被設置的值有:UTCSYSTEM,默認使用 UTC。它還支持動態設置,不過建議你們在配置文件中就寫上,以避免重啓以後形成沒必要要的麻煩。code

解決

說了這麼多,你們應該也知道如何去解決上面這個問題了。it

log_timestamps 參數默認使用 UTC 時區,這樣會使得日誌中記錄的時間比中國這邊的慢了 8 個小時,致使查看日誌不方便。修改成 SYSTEM 就能解決問題。io

mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | UTC    |
+----------------+--------+

mysql> SET GLOBAL log_timestamps = SYSTEM;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+
相關文章
相關標籤/搜索