Mysql
慢查詢日誌不儲存慢查詢
使用 5.6.35 MySQL 社區伺服器 (GPL)。我已經按如下方式設置了本地 MySQL 實例
show variables like '%slow%query%log%' slow_query_log ON slow_query_log_file /usr/local/mysql/data/MacBook-Pro-slow.log general_log ON
但我沒有看到任何正在登錄的查詢
SELECT * FROM mysql.slow_log; SELECT * FROM mysql.general_log
兩張桌子都是空的。我正在執行執行時間超過 20 秒的查詢,並且我的門檻值設置得很好。有什麼建議嗎?
收集一般日誌和慢日誌有兩種方法:
- 文件(這是預設設置)
- 表(這需要專門啟用)
根據您提供的資訊,MySQL 似乎正在使用 log_output 的預設值,即“日誌輸出到由 general_log_file 和 slow_query_log_file 定義的文件”。您可以通過查看這些文件來驗證這一點(查看文件夾 /usr/local/mysql/data/ 並查看那裡有哪些 *.log 文件)
如果您希望日誌進入數據庫,在 MySQL 客戶端上以特權使用者身份登錄時,例如 root:
SET GLOBAL log_output='TABLE';
SET GLOBAL general_log=ON;
SET GLOBAL slow_query_log=ON;
SET GLOBAL long_query_time=0;
以上將向表發送全域和慢
mysql.general_log
日誌mysql.slow_log
。請注意,我已設置
long_query_time
為 0 秒,即每個查詢都轉到slow_log
(即大量輸出到表中)。您可以將其更改為適合您的案例的另一個值。此外,
general_log
會產生大量日誌,因此您應該只在一定時間內啟用它。
預設情況下(在您的情況下也是如此)緩慢且一般的日誌將資訊保存到正常的作業系統文件中
您的情況下的慢日誌文件:
/usr/local/mysql/data/MacBook-Pro-slow.log
你不能從mysql裡面訪問這個文件的數據
您可以通過編輯器手動打開它,或者使用專門的工具,如 - pt-query-digest
如果您想在表中有這些數據,您需要啟用寫入表 - https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_log-output