線上環境若長期運行未清理慢查詢日誌,檔案體積將持續膨脹,佔用大量磁碟空間甚至影響資料庫效能。本文分享一套不停機、無風險的慢查詢日誌切換與清理標準流程,經生產環境驗證可靠。
SHOW VARIABLES LIKE '%slow%';
重點關注 slow_query_log(是否開啟)、slow_query_log_file(當前日誌檔案路徑)。
SET GLOBAL slow_query_log = OFF;
執行後再次執行 SHOW VARIABLES LIKE '%slow%'; 確認狀態已變為 OFF,此時 MySQL 停止寫入原日誌檔案,釋放檔案鎖定。
SET GLOBAL slow_query_log_file = '/mysqllog/slow_log/slow_queries_3306_new.log';
指定新的日誌檔案路徑,MySQL 將在重新啟用時自動建立新檔案。
SET GLOBAL slow_query_log = ON;
再次檢查變數確認新路徑已生效。
SELECT SLEEP(10) AS a, 1 AS b;
執行一條超過 long_query_time 的測試查詢,隨後檢查新日誌檔案是否記錄了該語句。
mv /mysqllog/slow_log/slow_queries_3306.log /mysqlbackup/slow_log/slow_queries_3306.log.bak.20140213
將原日誌檔案移動至備份目錄並重命名(建議加上日期),完成釋放磁碟空間的目的。如需長期保留,可進一步壓縮歸檔。
SUPER 權限。此流程同樣適用於一般查詢日誌、錯誤日誌等其他基於檔案的日誌類型,是 DBA 日常維護的必備技能。