| 日誌 | 用途 | 預設狀態 | 關鍵參數 |
|---|---|---|---|
| 錯誤日誌 | 記錄啟動/關閉/異常崩潰資訊 | 啟用 | log_error |
| 查詢日誌 | 記錄所有客戶端連線與 SQL 語句 | 關閉 | general_log, general_log_file |
| 二進制日誌 | 記錄資料變更(DDL/DML),用於主從複寫、時間點恢復 | 關閉 | log_bin, binlog_format |
| 慢查詢日誌 | 記錄執行時間超過閾值的 SQL | 關閉 | slow_query_log, long_query_time |
[mysqld]
# 錯誤日誌(通常預設已開)
log_error = mysql.err
# 一般查詢日誌
general_log = 1
general_log_file = mysql.log
# 二進制日誌(主從/備份必開)
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M
# 慢查詢日誌
slow_query_log = 1
slow_query_log_file = mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
注意:動態修改重啟後失效,需同步寫入配置檔。
-- 刪除指定檔案前的所有 binlog
PURGE BINARY LOGS TO 'mysql-bin.000123';
-- 或按時間
PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';
配合 expire_logs_days 自動過期。
mysqldumpslow:官方內建,聚合統計 Top N 慢查詢。pt-query-digest (Percona Toolkit):功能更強,支援報表、圖表、異常偵測。datadir 下,建議掛載獨立磁碟/分區,避免佔滿系統盤。mysql:mysql,權限 640,防止洩露敏感 SQL。