| 日誌類型 | 參數 | 用途 | 建議 |
|---|---|---|---|
| 錯誤日誌 | log_error | 啟動/關閉/嚴重錯誤/崩潰堆疊 | **必開**,預設開啟 |
| 通用查詢日誌 | general_log | 所有連線與 SQL 語句 | 僅開發/排查開啟 |
| 慢查詢日誌 | slow_query_log | 超時/無索引查詢 | **生產必開** |
| 二進制日誌 | log_bin | 復制、時間點恢復、審計 | 主庫/復制環境必開 |
| 中繼日誌 | relay_log | 從庫儲存主庫 Binlog | 從庫自動管理 |
/etc/my.cnf 或 /etc/mysql/my.cnfmy.ini (MySQL 安裝目錄或 C:\Windows\)[mysqld]
# 錯誤日誌
log_error = /var/log/mysql/error.log
# 通用查詢日誌
general_log = 1
general_log_file = /var/log/mysql/general.log
# 慢查詢日誌
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
# 二進制日誌
log_bin = /var/log/mysql/binlog
binlog_format = ROW
expire_logs_days = 14
max_binlog_size = 100M
# 確保目錄存在且屬主 mysql:mysql
# mkdir -p /var/log/mysql && chown mysql:mysql /var/log/mysql
[mysqld]
log_error = "E:/mysql/logs/error.log"
general_log = 1
general_log_file = "E:/mysql/logs/general.log"
slow_query_log = 1
slow_query_log_file = "E:/mysql/logs/slow.log"
long_query_time = 2
log_bin = "E:/mysql/logs/binlog"
binlog_format = ROW
expire_logs_days = 14
-- 通用日誌
SET GLOBAL general_log = ON;
SET GLOBAL general_log = OFF;
-- 慢查詢日誌
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1.5;
-- 二進制日誌 (需重啟)
-- 僅能在配置檔修改
SHOW VARIABLES LIKE 'log_%';
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW MASTER STATUS; -- 當前 Binlog 文件/位置
SHOW MASTER LOGS; -- 所有 Binlog 列表
# 命令列
mysqlbinlog /var/log/mysql/binlog.000001
mysqlbinlog /var/log/mysql/binlog.000001 | tail -20
# 解析特定時間區間
mysqlbinlog --start-datetime='2024-01-15 10:00:00' --stop-datetime='2024-01-15 11:00:00' \
/var/log/mysql/binlog.000001
/var/log/mysql/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 mysql mysql
sharedscripts
postrotate
mysqladmin flush-logs > /dev/null 2>&1 || true
endscript
}
**最佳實踐:錯誤日誌+慢查詢日誌+二進制日誌三劍客長期開啟,通用日誌按需短期開啟,統一存放專用目錄並配置輪轉。**