日志是 MySQL 運行的「黑盒記錄儀」,對故障診斷、性能調優、數據恢復、主從同步至關重要。MySQL 主要包含六類日志文件:
--log-error[=file_name] 或 my.cnf log-error。hostname.err。FLUSH LOGS 觸發舊文件重命名為 .old 後綴,生成新文件。MySQL 最核心日志,記錄所有修改數據的操作(不含 SELECT/SHOW),二進制格式,事務安全。
--log-bin[=file_name],默認數據目錄 mysql-bin.序號。max_binlog_size:單文件上限,達到時切換新文件(大事務可能超過)。binlog-do-db / binlog-ignore-db:按當前默認數據庫過濾,非按操作對象數據庫。mysql-bin.index 記錄所有 Binlog 絕對路徑,供線程查找。--log[=file_name],默認 hostname.log。long_query_time(默認 10s,5.1+ 支持微秒)的查詢,含時間、用戶、主機、耗時等。--log-slow-queries[=file_name],默認 hostname-slow.log。mysqldumpslow 彙總分析。log_queries_not_using_indexes 記錄未用索引的查詢;log_output=TABLE 寫入 mysql.slow_log 表。ib_logfile0、ib_logfile1,循環寫入。innodb_log_group_home_dir(目錄)、innodb_log_files_in_group(文件數)、innodb_log_file_size(單文件大小)。早期版本文本格式記錄修改操作,功能類 Binlog。MySQL 5.0 起已移除,不再支持。
各日志職責清晰:錯誤日志看故障,Binlog 做備份同步,慢查詢調優 SQL,Redo Log 保事務。生產環境建議:必開 Binlog、慢查詢、錯誤日志;通用日志僅臨時開啟。