| 日志 | 作用 | 默認狀態 | 關鍵參數 |
|---|---|---|---|
| 錯誤日志 | 記錄啟動/運行/關閉錯誤及關鍵事件 | 強制開啟,不可禁用 | log_error, log_warnings |
| 通用查詢日志 | 記錄所有連接與 SQL 執行 | 關閉 | general_log, general_log_file, log_output |
| 慢查詢日志 | 記錄超時/無索引查詢,性能調優核心 | 關閉 | slow_query_log, long_query_time, log_queries_not_using_indexes |
| 事務日志 (Redo) | InnoDB 專有,WAL 機制保證持久性與崩潰恢復 | 內建 | innodb_flush_log_at_trx_commit, innodb_log_file_size, innodb_log_files_in_group |
| 二進制日志 | 記錄所有數據變更,支撐主從復制、時間點恢復 | 關閉 | log_bin, binlog_format, sync_binlog, expire_logs_days |
log_error:文件路徑(默認 hostname.err,數據目錄下)。log_warnings:1=記錄警告(默認),>1=記錄連接失敗/拒絕訪問,0=關閉。tail -20 /mydata/data/hostname.err # 輸出包含:InnoDB 初始化、Buffer Pool 大小、端口綁定、Event Scheduler 狀態、Socket 文件創建等
舊版 FLUSH LOGS 可重新打開錯誤日志;新版需手動:
mv hostname.err hostname.err.old mysqladmin flush-logs # 生成新 hostname.err
general_log=ON、general_log_file 指定路徑。log_output:FILE (默認)、TABLE (寫 mysql.general_log 表)、NONE (不落地)。slow_query_log=1 long_query_time=1 # 秒,支持微秒,默認 10s log_queries_not_using_indexes=1 # 記錄無索引查詢 slow_query_log_file=/var/log/mysql/slow.log
SET GLOBAL slow_query_log=1; SET SESSION long_query_time=0.001; -- 當前會話生效 SET GLOBAL long_query_time=0.001; -- 全局生效(重啟失效,需寫配置)
# Time: 231007 23:46:33 # User@Host: root[root] @ localhost [] # Query_time: 0.108459 Lock_time: 0.000216 Rows_sent: 4 Rows_examined: 6 SET TIMESTAMP=1381160793; SELECT user,host,password FROM user WHERE user="root";
innodb_flush_log_at_trx_commit:1=提交同步刷盤 (最安全),2=提交寫文件系統緩存,0=僅靠後台每秒刷盤。ib_logfile0/1,默認 5MB/個,建議 256MB+。STATEMENT:記錄 SQL 邏輯,體積小,但非確定函數 (UUID()/NOW()) 導致主從不一致風險。ROW:記錄行級變更,精確、體積大,支持 READ COMMITTED 並發優化。MIXED (默認/推薦):一般用 STATEMENT,特定場景自動切 ROW。SHOW BINARY LOGS; -- 列出所有文件大小 SHOW MASTER STATUS; -- 當前寫入文件及 Position FLUSH LOGS; -- 切換新文件 (編號+1) SHOW BINLOG EVENTS [IN 'file'] [FROM pos] [LIMIT n]; -- 解析事件
# 解析文件 mysqlbinlog mysql-bin.000011 # 按時間導出 mysqlbinlog --start-datetime='2023-01-01' --stop-datetime='2023-01-02' mysql-bin.000011 > /tmp/a.sql # 導入恢復 mysql < /tmp/a.sql
expire_logs_days=N:自動過期刪除 (啟動/FLUSH LOGS 時觸發)。PURGE BINARY LOGS TO 'mysql-bin.000007';:刪除指定文件之前的所有。PURGE BINARY LOGS BEFORE '2023-10-19 10:26:36';:刪除指定時間前的。RESET MASTER (刪除所有並重置編號),生產環境極度危險。文中匯總了 expire_logs_days、general_log、binlog_format、log_output、log_error、log_warnings、long_query_time、max_binlog_size、sync_binlog、innodb_log_buffer_size、innodb_log_file_size、innodb_log_files_in_group、innodb_support_xa、relay_log、slow_query_log、sql_log_bin 等 40 余個變量的作用域、動態性、默認值及建議值,建議收藏備查。
