首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 日誌查看與管理:錯誤、慢查詢、二進制、通用日誌完整指南

     編輯:MySQL 綜合教學

MySQL 日誌查看與管理:錯誤、慢查詢、二進制、通用日誌完整指南

MySQL 提供多種日誌記錄運行狀態、審計操作、支援復制與時間點恢復。本文整理各類日誌的啟用方式、查看命令、關鍵參數解讀,幫助 DVA 快速定位問題。

一、日誌類型速覽

日誌用途關鍵參數
錯誤日誌啟動/運行/關閉錯誤log_error
通用查詢日誌客戶端連接、所有 SQLgeneral_log, general_log_file
二進制日誌資料變更語句、復制、PITRlog_bin, binlog_format
慢查詢日誌超時或無索引查詢slow_query_log, long_query_time
中繼日誌從庫回放主庫 Binlogrelay_log

二、查看日誌配置命令

-- 1. 所有 log 相關變數
SHOW GLOBAL VARIABLES LIKE '%log%';

-- 2. 專門查看 log_ 開頭變數
SHOW VARIABLES LIKE 'log_%';

-- 3. 查看當前 Binlog 位置(主庫)
SHOW MASTER STATUS;

-- 4. 查看從庫複制狀態
SHOW SLAVE STATUS\G

三、關鍵日誌啟用與分析

1. 慢查詢日誌(生產建議開啟)

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2          -- 超過 2 秒記錄
log_queries_not_using_indexes = ON  -- 記錄無索引查詢

分析工具:mysqldumpslow、pt-query-digest。

2. 通用查詢日誌(僅開發/排錯短時開啟)

-- 動態開啟
SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

-- 查看狀態
SHOW VARIABLES LIKE 'general_log%';

⚠️ 生產環境嚴禁長期開啟,會產生海量 I/O、佔滿磁碟。

3. 二進制日誌(主庫必開)

[mysqld]
log_bin = mysql-bin
binlog_format = ROW          -- ROW/STATEMENT/MIXED
expire_logs_days = 7         -- 自動清理 7 天前日誌
max_binlog_size = 1G         -- 單檔上限
sync_binlog = 1              -- 每次提交 fsync,最安全

查看內容:mysqlbinlog mysql-bin.000001 | less。

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

位置由 log_error 指定,通常在資料目錄下 hostname.err。啟動失敗、異常關閉、InnoDB 恢復資訊皆記錄於此。

四、日誌維護最佳實踐

  • 定期歸檔:配合 logrotate 每日切割、壓縮、保留 30 天。
  • 監控告警:慢查詢日誌新增條目觸發告警;錯誤日誌出現 ERROR 關鍵字告警。
  • Binlog 同步策略:sync_binlog=1 最安全但效能稍損;高併發可設 100-1000 配合電池備援 RAID 卡折衷。
  • 避免大事務:大事務會撐大 Binlog、增加主從延遲,拆分為小批次提交。

善用日誌是資料庫可觀測性的核心,建議將上述配置納入標準化 my.cnf 模板,新實例部署即合規。

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