Zabbix 監控資料庫啟用慢查詢日誌後,日誌檔膨脹至 700MB,多為 0.1 秒級查詢。嘗試調整 long_query_time 並改用配置檔持久化,卻遭遇 slow_query_log 始終為 OFF、動態設定報權限錯誤等問題。
錯誤訊息:File '/MYSQLDATA/mysql_slow_query.log' not found (Errcode: 13 - Permission denied)
原因:MySQL 以 mysql 使用者啟動,但日誌目錄屬主為 root,導致無法建立/寫入檔案。
解決:
touch /MYSQLDATA/mysql_slow_query.log chown mysql:mysql /MYSQLDATA/mysql_slow_query.log chmod 644 /MYSQLDATA/mysql_slow_query.log
配置檔中寫了 slow_query_log =(缺值)、long_query_time =(缺值),正確寫法:
slow_query_log = ON slow_query_log_file = /MYSQLDATA/mysql_slow_query.log long_query_time = 1 log_queries_not_using_indexes = ON
ps -ef | grep mysqld 發現殘留進程,導致配置不生效。需完整停止所有實例後再啟動。
[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 log_queries_not_using_indexes = 1 log_output = FILE
-- 檢查配置生效 SHOW VARIABLES LIKE '%slow%'; -- 查看慢查詢統計 SHOW GLOBAL STATUS LIKE '%slow%'; -- 測試觸發 SELECT SLEEP(2);
# 一般查詢日誌(記錄所有 SQL) general_log = 1 general_log_file = /var/log/mysql/general.log # 錯誤日誌 log_error = /var/log/mysql/error.log # 二進制日誌(主從複寫、時間點恢復必備) log_bin = /var/log/mysql/binlog binlog_format = ROW expire_logs_days = 7