Linux環境下MySQL日志管理指南
MySQL日志是數據庫運行狀態的“黑匣子”,用于故障排查、性能優化、安全審計及數據恢復。Linux系統中,MySQL日志主要分為錯誤日志、二進制日志、慢查詢日志、通用查詢日志四大類,以下從配置、查看、清理三方面詳細說明管理方法。
datadir
目錄(如/var/lib/mysql/
),文件名為hostname.err
。hostname-bin.xxxxxx
。long_query_time
閾值(默認10秒)的查詢,用于識別性能瓶頸(如未優化的SQL語句)。默認關閉,文件名為slow-query.log
。general.log
。通過my.cnf
(或my.ini
)文件配置,關鍵參數:
[mysqld]
log_error = /var/log/mysql/mysql-error.log # 指定日志路徑(需提前創建目錄并授權)
修改后重啟MySQL生效:systemctl restart mysql
。
[mysqld]
log-bin = /var/log/mysql/mysql-bin # 開啟二進制日志,指定路徑
server-id = 1 # 唯一實例ID(主從復制必需)
max_binlog_size = 128M # 單個日志文件最大大?。ǔ^則輪轉)
expire_logs_days = 7 # 自動刪除7天前的日志(節省空間)
重啟MySQL后生效,可通過SHOW VARIABLES LIKE 'log_bin%';
驗證配置。
[mysqld]
slow_query_log = ON # 開啟慢查詢日志
slow_query_log_file = /var/log/mysql/slow.log # 日志文件路徑
long_query_time = 2 # 慢查詢閾值(秒)
log_queries_not_using_indexes = ON # 記錄未使用索引的查詢(可選)
重啟MySQL后生效,可通過SHOW VARIABLES LIKE 'slow_query%';
查看當前設置。
[mysqld]
general_log = ON # 開啟通用查詢日志
general_log_file = /var/log/mysql/general.log # 日志文件路徑
注意:通用日志會記錄所有查詢,生產環境建議僅在調試時開啟,避免影響性能。
錯誤日志
使用tail
命令實時查看最新錯誤:
tail -f /var/log/mysql/mysql-error.log
或通過MySQL命令查看路徑:
SHOW VARIABLES LIKE 'log_error';
二進制日志
查看所有二進制日志文件:
SHOW BINARY LOGS;
解析日志內容(需安裝mysqlbinlog
工具):
mysqlbinlog /var/log/mysql/mysql-bin.000001
可添加--start-datetime
和--stop-datetime
參數查看指定時間段的日志。
慢查詢日志
查看慢查詢日志路徑:
SHOW VARIABLES LIKE 'slow_query_log_file';
使用less
或tail
查看內容:
less /var/log/mysql/slow.log
通用查詢日志
查看通用查詢日志路徑:
SHOW VARIABLES LIKE 'general_log_file';
使用tail
查看實時日志:
tail -f /var/log/mysql/general.log
rm /var/log/mysql/mysql-error.log
mysqladmin flush-logs
RESET MASTER;
PURGE BINARY LOGS TO 'mysql-bin.000005';
(保留000005之后的日志)使用logrotate
工具實現日志自動輪轉,步驟如下:
/etc/logrotate.d/mysql
:/var/log/mysql/*.log {
daily # 每天輪轉
rotate 7 # 保留7份
compress # 壓縮舊日志
missingok # 文件不存在不報錯
notifempty # 空文件不輪轉
sharedscripts # 所有日志處理完再執行腳本
postrotate
systemctl reload mysql > /dev/null 2>&1 || true
endscript
}
logrotate -vf /etc/logrotate.d/mysql
(強制立即輪轉)。mysql
用戶,避免其他用戶修改:chown -R mysql:mysql /var/log/mysql/
long_query_time=1
)。