通過配置 my.cnf 開啟各類日志,可實現類似 SQL Server Profiler 的實時 SQL 監控、慢查詢分析、審計追蹤。生產環境建議按需開啟,避免性能開銷。
編輯 my.cnf([mysqld] 區塊):
log = /var/log/mysql/mylog.log -- 記錄所有執行語句 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 -- 超過 1 秒記錄 log_queries_not_using_indexes = 1 -- 記錄未用索引查詢
動態開啟(無需重啟):
SET GLOBAL log_slow_queries = ON; SET GLOBAL slow_query_log = ON; SET GLOBAL long_query_time = 0.1;
慢查詢日志格式示例:
# Time: 130905 14:15:59 # User@Host: root[root] @ [183.239.28.174] # Query_time: 0.735883 Lock_time: 0.000078 Rows_sent: 262 Rows_examined: 262 SET timestamp=1378361759; SHOW TABLES FROM `test_db`;
強制切換新日志文件:
mysqladmin flush-logs mysqladmin refresh -- 或 SQL FLUSH LOGS;
備份常規日志步驟:
cd mysql-data-directory mv mysql.log mysql.old mysqladmin flush-tables # 備份 mysql.old 後刪除
注意:開啟全量日志會影響寫入性能,生產環境建議關閉或僅開啟慢查詢日志。