首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 通用查詢日志與慢查詢日志配置指南

     編輯:MySQL 資料庫相關知識

MySQL 提供完整的日志體系,通用查詢日志記錄所有客戶端操作,慢查詢日志聚焦性能分析。本文詳解配置方法、參數含義及生產環境最佳實踐。

通用查詢日志

配置方式(my.cnf / my.ini)

[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log  # 或 log = /path/to/log
  • general_log:0 關閉 / 1 開啟
  • general_log_file:日志文件路徑,需 MySQL 進程寫權限
  • 運行時動態開啟:SET GLOBAL general_log = 1;

適用場景

  • 開發調試:排查應用發送的具體 SQL
  • 審計追蹤:記錄所有 DDL/DML/DCL 操作
  • 故障複現:還原事故現場操作序列

⚠️ 生產環境禁用:高寫入場景日志量極大,嚴重影響磁盤 I/O 與性能。

慢查詢日志

核心配置

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2          # 超過 2 秒記錄(支持微秒:0.05)
log_queries_not_using_indexes = 1  # 記錄未使用索引的查詢
log_slow_admin_statements = 1      # 記錄管理語句(ALTER/OPTIMIZE 等)
log_slow_slave_statements = 1      # 記錄從庫慢重放

關鍵參數解讀

參數建議值說明
long_query_time0.5-2 秒核心業務設 0.5s,分析型設 2s
log_queries_not_using_indexesON發現潛在全表掃描,噪音較大需定期清理
slow_query_log_file獨立磁盤/分區避免與數據目錄爭用 I/O

日志分析工具鏈

  1. mysqldumpslow:官方聚合工具,按查詢模式統計
    mysqldumpslow -s t -t 10 /var/log/mysql/slow.log  # 按耗時 Top 10
  2. pt-query-digest:Percona Toolkit 旗艦分析工具
    pt-query-digest /var/log/mysql/slow.log --limit 20 --output json > digest.json
  3. MySQL Workbench:可視化導入分析
  4. ELK/Grafana Loki:集中化日志平台實時告警

日志輪轉與清理

# logrotate 配置 /etc/logrotate.d/mysql
/var/log/mysql/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 640 mysql mysql
    sharedscripts
    postrotate
        mysqladmin flush-logs 2>/dev/null || true
    endscript
}

錯誤日志補充

[mysqld]
log_error = /var/log/mysql/error.log
log_warnings = 2  # 5.7+ 對應 log_error_verbosity=3

記錄啟動/關閉、崩潰恢復、主從同步錯誤、訪問控制拒絕等關鍵事件。

最佳實踐總結

日志類型生產環境開發/測試
錯誤日志必開必開
慢查詢日志必開(long_query_time=1-2)必開(0.5)
通用查詢日志禁用按需開啟
Binlog必開(ROW 格式)按需

合理配置日志體系,是可觀測性建設的基石。生產環境「慢查詢必開、通用查詢必關」是鐵律。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved