MySQL 日誌檔案完整解析
日誌是 MySQL 核心組件,協助定位事件、效能故障、資料變更歷史與災難恢復。共 6 大類:
1. 錯誤日誌
- 記錄:嚴重警告/錯誤、啟動關閉詳細資訊
- 預設:關閉,輸出到 stderr
- 啟動:
--log-error[=file_name]
- 位置:資料目錄,
hostname.err
- 切割:
FLUSH LOGS 備份舊檔為 .old,建立新檔
2. 二進制日誌 - 最關鍵日誌
- 記錄:所有修改資料的 Query (二進制格式),含執行時間、資源消耗、事務資訊
- 啟動:
--log-bin[=file_name] (預設 mysql-bin.*)
- 附加參數:
| 參數 | 功能 |
| max_binlog_size | 單檔上限,達到自動建新檔 (大事務不拆分) |
| binlog-do-db=db_name | 僅記錄指定資料庫 (以當前 USE 的 DB 判斷) |
| binlog-ignore-db=db_name | 忽略指定資料庫,記錄其他所有 |
mysql-bin.index:記錄所有 binlog 絕對路徑,供線程尋找。
3. 通用查詢日誌
- 記錄:所有 Query (含 SELECT)
- 啟動:
--log[=file_name] (預設 hostname.log)
- 缺點:體積大、效能影響大,僅短期除錯使用
4. 慢查詢日誌
- 記錄:執行時間超過閾值的 Query
- 啟動:
--log-slow-queries[=file_name] (預設 hostname-slow.log)
- 格式:純文字,含時間、耗時、用戶、主機
- 分析工具:
mysqldumpslow
5. InnoDB Redo Log (線上重做日誌)
- InnoDB 事務安全核心:Redo Log + Undo Log (表空間)
- 記錄:所有物理變更與事務資訊
- 位置:資料目錄,可用
innodb_log_group_home_dir 變更
- 檔案數:
innodb_log_files_in_group
6. 更新日誌
- 舊版功能,類似 binlog 但純文字格式
- MySQL 5.0+ 已移除支援
理解各日誌用途與配置,是 DBA 進行效能調優與災難恢復的基石。
- 上一篇文章: MySQL 主從複寫原理深度解析:三線程協作、非同步風險與演進歷程
- 下一篇文章: MySQL 啟用 SQL 執行記錄完整指南:my.cnf 配置 log 參數、重啟驗證與 sql_row.log 實戰
Copyright ©
程式碼之家 All Rights Reserved