萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Linux/Windows 啟用 MySQL 多種日誌完整配置指南

Linux 系統 (my.cnf / my.ini [mysqld] 區段)

1. 一般查詢日誌 (General Query Log)

general_log = 1
general_log_file = /var/log/mysql/mysql_query.log

記錄所有連線與 SQL,調試用,**生產環境建議關閉**,極度消耗 IO。

2. 慢查詢日誌 (Slow Query Log) - 生產必開

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql_slow.log
long_query_time = 1          -- 超過 1 秒記錄 (預設 10 秒)
log_queries_not_using_indexes = 1  -- 記錄未用索引的查詢
min_examined_row_limit = 100       -- 忽略掃描行數 < 100 的查詢

3. 二進制日誌 - 主從/時間點恢復必開

server-id = 1
log_bin = /var/log/mysql/mysql-bin
binlog_format = ROW           -- ROW/STATEMENT/MIXED,建議 ROW
binlog_expire_logs_seconds = 604800  -- 7 天自動清理 (8.0+)
max_binlog_size = 100M

4. 錯誤日誌 (預設開啟)

log_error = /var/log/mysql/error.log
log_warnings = 2              -- 記錄更多警告 (連線中斷等)

Windows 系統 (my.ini)

[mysqld]
# 一般查詢日誌
general_log = 1
general_log_file = "E:/mysqllog/mysql_query.log"

# 慢查詢日誌
slow_query_log = 1
slow_query_log_file = "E:/mysqllog/mysql_slow.log"
long_query_time = 1

# 二進制日誌
server-id = 1
log_bin = "E:/mysqllog/mysql-bin"
binlog_format = ROW

# 錯誤日誌
log_error = "E:/mysqllog/error.log"

修改後**必須重啟服務**:net stop mysql & net start mysql 或重啟服務。

驗證日誌是否生效

mysql> SHOW VARIABLES LIKE '%log%';
+---------------------------------+----------------------------------+
| Variable_name                   | Value                            |
+---------------------------------+----------------------------------+
| general_log                     | ON                               |
| general_log_file                | /var/log/mysql/mysql_query.log   |
| slow_query_log                  | ON                               |
| slow_query_log_file             | /var/log/mysql/mysql_slow.log    |
| log_bin                         | ON                               |
| log_bin_basename                | /var/log/mysql/mysql-bin         |
| log_error                       | /var/log/mysql/error.log         |
+---------------------------------+----------------------------------+

日誌分析工具推薦

  • mysqldumpslow:官方慢查詢分析 (見文章 178448)。
  • pt-query-digest (Percona Toolkit):功能最強,支援聚合、過濾、報表輸出。
  • mysqlbinlog:解析 binlog,可用於時間點恢復、異常 SQL 審計。

生產環境最佳實踐

  1. **慢查詢日誌永久開啟**,long_query_time=1,定期 pt-query-digest 分析。
  2. **Binlog 開啟 ROW 格式**,配合 expire_logs_days 自動清理。
  3. **一般查詢日誌僅調試時短暫開啟**,或用 SET GLOBAL general_log=ON; 動態開關。
  4. 日誌目錄掛載獨立磁碟/分區,避免寫滿系統盤。
  5. 配置 logrotate 切割壓縮,保留 30 天。
copyright © 萬盛學電腦網 all rights reserved