MySQL日誌體系
一、MySQL日誌分類:日誌文件記錄了影響數據庫的各種類型活動,MySQL數據庫常見的日誌文件分類。
錯誤日誌(Error log) --如果日誌不存在,flush logs會卡主,如果想備份錯誤日誌,必須要重新新建一個,並賦予權限,在執行flush logs;
慢查詢日誌(Slow query log) -- 如果日誌不存在,flush logs會提示日誌文件不存在,也不會創建,,如果想備份慢查詢日誌,必須要重新新建一個,並賦予權限,在執行flush logs;
二進制日誌(binary log) -- 生成一個新的二進制文件
查詢日誌 (general_log) -- 如果不存在,mysql會自動生成一個
註意:以上的日誌,當執行flush logs時,mysql實例將關閉並重新打開日誌文件
二、錯誤日誌詳解:MySQL錯誤日誌是記錄MySQL 運行過程中較為嚴重的警告和錯誤信息,以及MySQL每次啟動和關閉的詳細信息。
【查看MySQL數據庫錯誤日誌存放的位置】
mysql> show variables like ‘log_error‘;
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
1 row in set (0.01 sec)
my.cnf
log-error=/var/log/mysqld.log -- 或mysql實例中顯示的有些不同
模擬錯誤日誌:
三、慢查詢日誌
和慢查詢日誌有關的參數:
slow_query_log=on|off #是否開啟慢查詢日誌
slow_query_log_file=filePathAndName; #指定慢查詢日誌文件的路徑和文件名,默認在data目錄
long_query_time=5 #指定多少秒沒有返回結果的語句記錄日誌,即超過該時間就被認為是慢查詢
log_queries_not_using_indexes #記錄所有沒有使用到索引的查詢語句
min_examined_row_limit=1000 #記錄由於查詢了多於1000次而導致的慢查詢
log_slow_admin_statements #記錄慢的那些OPTIMIZE TABLE、ANALZE TABLE和ALTER TABLE語句。因為這些語句本身內部會執行查詢,如alert table會先查詢出來再進行修改。
log_slow_slave_statements #記錄由slave所產生的慢查詢
log_output=FILE|TABLE #如果選擇table select * from mysql.slow_log;
設置參數:
set @@global.log_output=‘FILE‘;
set global log_output=‘TABLE‘;
select @@log_output;
select @@global.log_output;
show global variables like ‘log_output‘;
show variables like ‘log_output‘;
?
模擬慢查詢日誌: select sleep()
MySQL日誌體系