記錄所有客戶端連線與執行的 SQL 語句,適合開發調試,**生產環境不建議長期開啟**(磁碟 I/O 開銷大)。
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
Windows 路徑範例:general_log_file = "C:/mysql/logs/general.log"
SET GLOBAL general_log = ON;
SET GLOBAL general_log = OFF;
記錄執行時間超過閾值的 SQL,生產環境**強烈建議常開**,用於性能調優。
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2 # 超過 2 秒記錄(可調至 0.5-1 秒)
log_queries_not_using_indexes = 1 # 記錄未用索引的查詢(可選)
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log:按耗時排序 Top 10避免日誌佔滿磁碟,建議配置 logrotate:
/var/log/mysql/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 mysql mysql
sharedscripts
postrotate
mysqladmin flush-logs > /dev/null 2>&1 || true
endscript
}
| 日誌類型 | 建議環境 | 典型開銷 | 備註 |
|---|---|---|---|
| General Log | 開發/測試 | 高(全量寫入) | 生產僅短期開啟排查具體問題 |
| Slow Log | 全環境 | 低(僅記錄慢查詢) | 長期開啟,配合 pt-query-digest 定期分析 |
合理配置日誌,讓資料庫「有據可查」,是穩定運維的基石。