我們在追查MySQL
問題和性能調優時,有時希望看到當前都有哪些命令正在被執行,讓我們迅速找到熱點命令。下面我們就來介紹下如何查看當前正在執行的MySQL
語句。
日誌LOG
我們之前在 用service命令管理mysql啓停 文章中已經使用過MySQL
的錯誤日誌,它在my.cnf
配置文件中指定位置:
[mysqld]
log-error = /user/local/mysql/log/mysql.err
該參數指定了錯誤文件位置,能夠記錄所有的錯誤日誌,在問題追查時非常關鍵。類似的,我們還可以指定常規日誌:
[mysqld]
# 控制是否開啓常規日誌
general_log=true
# 指定常規日誌的文件路徑
general_log_file=/usr/local/mysql/log/mysql.log
這個配置默認是關閉的,因爲這個日誌文件會膨脹的很快,在大型業務中可能很快耗盡磁盤空間,因此一般只在追查問題時臨時打開,使用完成後關閉。
如果我們更改了這個配置,需要重啓MySQL
服務。
查看常規日誌是否打開
mysql> show variables like 'general%';
+------------------+--------------------------------+
| Variable_name | Value |
+------------------+--------------------------------+
| general_log | ON |
| general_log_file | /usr/local/mysql/log/mysql.log |
+------------------+--------------------------------+
2 rows in set (0.00 sec)
如果我們想要更改該參數,可以使用:
mysql> set global general_log=off;
Query OK, 0 rows affected (0.01 sec)
由於general_log
是全局的變量,因此必須帶上global
參數。如果不是通過配置文件的方式變更狀態,會在MySQL
重啓後失效。
查看實時日誌
如果我們已經打開了常規日誌的記錄,我們可以通過常規日誌文件的查看來得到實時日誌:
# -f 代表會實時讀取該文件的更新內容
tail -f /usr/local/mysql/log/mysql.log
然後你就能在終端裏看到MySQL
的實時執行記錄,如果覺得刷新過快,也可以使用vim/tail
等方法來查看該日誌文件進行分析。
參考資料
- MySQL查看實時執行的SQL語句:https://www.awaimai.com/1910....
- 用service命令管理mysql啓停:https://segmentfault.com/a/11...