MySQL 提供多種類型日志文件,分別記錄服務器運行不同維度信息。理解各日志類型的功能、配置方式及運維要點,是數據庫管理員進行故障排查、性能分析、數據恢復、主從復制的核心技能。本文系統梳理六大日志類型的核心特性與最佳實踐。
功能: 記錄 MySQL Server 運行過程中所有較嚴重的警告、錯誤信息,以及每次啟動/關閉的詳細信息。
默認狀態: 早期版本默認關閉(輸出到 stderr),MySQL 5.6+ 默認開啟。
啟用與配置:
--log-error 或配置文件 log-errorhostname.err--log-error=file_name 或 my.cnf 中指定運維技巧: 使用 FLUSH LOGS 生成新日志文件(需先手動 mv 舊文件)。
功能: 記錄所有修改數據庫的查詢(以二進制形式),包含執行時間、資源消耗、事務信息,**保證事務安全**。
啟用與配置:
--log-bin=file_name 或 my.cnf 中 log-binmysql-bin.*******mysql-bin.index:記錄所有 Binlog 絕對路徑,保證線程能順利找到所需文件關鍵參數:
| 參數 | 作用 |
|---|---|
max_binlog_size | 單個 Binlog 文件最大值,達到上限自動切換新文件。事務不拆分跨文件,可能略超上限 |
binlog-do-db=db_name | 僅記錄指定庫的 Binlog,忽略其他庫 |
binlog-ignore-db=db_name | 忽略指定庫,記錄其他所有庫 |
關鍵說明: 兩參數中的 db_name 指**執行查詢時所處的默認數據庫**(USE db_name 後的庫),而非查詢更新涉及的數據庫。
功能: 類似 Binlog,但以**文本格式**記錄。MySQL 5.0 起已廢棄,不再支持。
功能: 記錄**所有**查詢(含 SELECT),文本格式。
啟用: --log=file_name 或 my.cnf 中 log。默認文件名 hostname.log,位於數據目錄。
⚠️ 性能警示: 記錄所有查詢體積極大,**嚴重影響性能**,生產環境一般**不開啟**。僅用於短期追蹤特定 SQL 性能問題。
功能: 記錄執行時間超過閾值的查詢。
啟用: --log-slow-queries=file_name。默認 hostname-slow.log,數據目錄。
特點: 文本格式,可直接編輯器查看。記錄執行時刻、耗時、用戶、連接主機等信息。
分析工具: mysqldumpslow 專門分析慢查詢日志,助力性能優化。
功能: InnoDB 通過**在線 Redo 日志** + **表空間 Undo 信息** 保證事務安全(ACID)。記錄所有物理變更和事務信息,配合 Undo 實現崩潰恢復與事務回滾。
配置:
innodb_log_group_home_dirinnodb_log_files_in_groupFLUSH LOGS 或 logrotate 管理文件大小與數量expire_logs_days 自動清理舊文件,兼顧主從復制與磁盤空間long_query_time 建議設置 1-2 秒,配合 log_queries_not_using_indexes 發現全表掃描六大日志各司其職:Error Log 守衛穩定、Binlog 掌管復制與恢復、Slow Query Log 指引優化、Redo Log 築牢事務安全、General Log 臨時偵察、Update Log 歷史退場。合理配置、定期維護、善用分析工具,讓日志系統成為數據庫可觀測性與可靠性的核心支柱。