我最新的慢日誌去哪了?
最近接到一個客戶說,我在easydb中為什麼看不到實時的慢sql,只能看到過氣的慢日誌的?
慢日誌對於MySQL來說確實,是非常重要的,無論是問題排查還是效能優化,都能從其中捕獲一些問題的來源,如果慢日誌失去了實時性那還了得?
然後即刻登到easydb中去看,發現最新的慢日誌定格在了7月5號晚22:00左右。難道真的是easydb捕獲不到最新的慢日誌了嗎?
但是發現MySQL日誌檔案中的slowlog最後一條確實是跟easydb中的最新的一條相一致,那麼easydb依舊是實時抓取slow log。那問題出現在哪裡了呢?
Linux主機?還是MySQL伺服器的時間?
Linux所在主機的時間
[root@msyql ]# date
Thu Jul 6 10:35:12 CST 2017
MySQL的時間
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-07-06 10:36:10 |
+---------------------+
1 row in set (0.00 sec)
比較悲傷並沒有看到我們想看到的時間,時間都跟我螢幕右下方的時間相一致。
那問題出在哪裡了呢?到底是哪裡控制了MySQL slow日誌裡面的時間?
看一下關於MySQL 時間的引數
mysql> show variables like `%time%`;
+---------------------------------+-------------------+
| Variable_name | Value |
+---------------------------------+-------------------+
| binlog_max_flush_queue_time | 0 |
| connect_timeout | 8 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| delayed_insert_timeout | 300 |
| explicit_defaults_for_timestamp | ON |
| flush_time | 0 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 5 |
| innodb_old_blocks_time | 1000 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lc_time_names | en_US |
| lock_wait_timeout | 31536000 |
| long_query_time | 1.000000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 300 |
| slave_net_timeout | 30 |
| slow_launch_time | 2 |
| time_format | %H:%i:%s |
| timed_mutexes | OFF |
| timestamp | 1499328877.100398 |
| wait_timeout | 28800 |
+---------------------------------+-------------------+
25 rows in set (0.00 sec)
然後我看了一下我自己的MySQL 關於時間的引數
mysql> show variables like `%time%`;
+---------------------------------------+-------------------+
| Variable_name | Value |
+---------------------------------------+-------------------+
| connect_timeout | 10 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| delayed_insert_timeout | 302 |
| flush_time | 0 |
| have_response_time_distribution | YES |
| innodb_lock_wait_timeout | 50 |
| innodb_old_blocks_time | 0 |
| innodb_rollback_on_timeout | OFF |
| innodb_thread_concurrency_timer_based | OFF |
| interactive_timeout | 7200 |
| lc_time_names | en_US |
| lock_wait_timeout | 31536000 |
| long_query_time | 1.000000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| query_response_time_range_base | 10 |
| query_response_time_stats | OFF |
| rpl_semi_sync_master_timeout | 1000 |
| slave_net_timeout | 60 |
| slow_launch_time | 2 |
| slow_query_log_timestamp_always | OFF |
| slow_query_log_timestamp_precision | second |
| time_format | %H:%i:%s |
| timed_mutexes | OFF |
| timestamp | 1499329112 |
| trx_changes_idle_timeout | 0 |
| trx_idle_timeout | 0 |
| trx_readonly_idle_timeout | 0 |
| wait_timeout | 86400 |
+---------------------------------------+-------------------+
注:北美東部夏令時間英文名: Eastern Daylight Time 也就是上面的EDT
北美中部夏令時間英文名: Central Daylight Time 也就是上面的CST
這個system_time_zone跟time_zone有什麼區別呢?這兩個引數是幹什麼的呢?
看一下官方文件的解釋:
也就是說這個引數才是真正的控制伺服器的區時,且在MySQL一旦執行,這個區時就是寫死了的,不會變。那麼也就是很有可能是由於這兩個引數的問題導致我的慢日誌的時間變慢了。來測試一下
啟動MySQL的時候指定timezone為CST
發現這個時候的MySQL系統時間慢了8個小時,而且慢日誌的時間跟這個時間是一致的,也是慢了8個小時。
./bin/mysqld_safe --defaults-file=/home/my3301/my.cnf --timezone=CST-8 &
啟動MySQL的時候指定timezone為CST-8
發現這個時候的MySQL系統時間跟我左下角的時間就正好吻合了,並且慢日誌的時間跟我左下角的時間一致了。
這其實就驗證了timezone這個引數影響了慢日誌寫入到日誌裡面的時間了。
那system_time_zone根time_zone又有什麼區別呢?
The system_time_zone variable differs from time_zone. Although they might have the same value, the latter variable is used to initialize the time zone for each client that connects.
也就是一個是伺服器系統時區,一個是連線的客戶端的時區。
如果這兩個引數設定不當,就會導致Linux主機系統的時間、MySQL select now()的時間,還有慢日誌等日誌產生的時間不一致。
這也就是為什麼客戶的慢日誌為啥只能收集到12小時“前”的原因了~
相關文章
- PHP慢指令碼日誌和Mysql的慢查詢日誌PHP指令碼MySql
- redis慢日誌Redis
- mysql 鎖的慢日誌MySql
- 2.4慢操作日誌
- 慢查詢日誌的管理
- MySQL慢日誌全解析MySql
- mysql開啟慢日誌MySql
- MySQL:慢查詢日誌MySql
- MySQL慢日誌優化MySql優化
- 使用慢查詢日誌
- mysql慢查詢日誌MySql
- Java21虛擬執行緒:我的鎖去哪兒了?Java執行緒
- MySQLSlowlog慢查詢日誌的配置以及清空日誌內容MySql
- mysql5.7 慢日誌配置MySql
- 【offer去哪了】我一連面試了十個Java崗,統統石沉大海!面試Java
- Java永久代去哪兒了Java
- MySQL 慢查詢日誌——讓“慢”無所遁形MySql
- MySQL資料庫中的日誌檔案---(3)慢查詢日誌MySql資料庫
- 我的管理日誌【一】
- PHP 7 來了,PHP 6 去哪兒了?PHP
- 慢查詢日誌開啟分析
- Mysql 慢日誌分析工具MysqldumpslowMySql
- pgbadger 慢日誌分析工具
- 【MySQL】慢查詢日誌不列印MySql
- php-fpm慢執行日誌PHP
- mysqlsla 分析mysql慢查詢日誌MySql
- Swift中main函式去哪了?SwiftAI函式
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- 對 MySQL 慢查詢日誌的簡單分析MySql
- 分析mysql慢查詢日誌的好工具--mysqlslaMySql
- Redis慢查詢日誌學習功能Redis
- mysql之 slow log 慢查詢日誌MySql
- MySQL Slow Query log(慢查詢日誌)MySql
- mysql慢查詢日誌分析工具使用MySql
- 開啟mysql和php慢日誌方法MySqlPHP
- Mysql慢查詢日誌分析工具mysqlslaMySql
- 【MySql】 慢日誌查詢工具之mysqlslaMySql
- 自定義的請求頭,你去哪裡了?