您好,登錄后才能下訂單哦!
Mysql數據庫怎么管理日志?針對這個問題,今天小編總結這篇有關日志管理的文章,可供感興趣的小伙伴們參考借鑒,希望對大家有所幫助
一般成熟的軟件,都會有自己的日志文件。通過這些日志來快速定位問題。在Mysql中,日志分為以下幾類:
慢查詢日志,當sql的執行時間超過設定值時,便會記錄
錯誤日志,mysql啟動、停止或運行時發生錯誤時,會記錄到錯誤日志里
二進制日志,該日志記錄那些改變數據庫數據時的sql語句,通過他,我們可以來恢復Mysql數據
查詢日志,當開啟時,會記錄查詢SQL。
錯誤日志
錯誤日志寫記錄Mysql啟動、停止時出現的問題,另外也記錄Mysql在運行中發生的重大問題。可以使用show variables like 'log_err%';查看錯誤日志文件的位置。
mysql> show variables like 'log_err%'; +---------------------+-------------------------------+ | Variable_name | Value | +---------------------+-------------------------------+ | log_error | ./iZbp171edtq2kx5iy0xufeZ.err | | log_error_verbosity | 3 | +---------------------+-------------------------------+ 2 rows in set (0.01 sec)
錯誤日志,默認使用主機名作為文件名,以err作為后綴名,存放在mysql目錄下的/var目錄中。如果我們想修改的話,可以修改配置文件log_error項。可以使用相對路徑或絕對路徑,使用相對路徑的話只會修改錯誤日志文件名,而使用絕對路徑則可以修改錯誤日志存放的位置。
錯誤日志的查看也非常簡單,直接使用cat或vim來查看即可。
通用查詢日志
通用查詢日志會記錄用戶所有的操作,所以一般占用空間較大,日常運維中一般都不會開啟,并且默認情況也是關閉該日志的。如想開啟的話,則可以在配置文件中加入log選項。
慢查詢日志
慢查詢是一個非常好的排查SQL問題工具,很多情況下,都是我們的sql導致系統運行不暢。筆者以前犯過這個錯誤,使用的一條非常復雜的查詢語句,系統剛上不舊就502了。前段時間,發現公司的老項目也是出現了相應的問題,該項目使用的dedecms,當數據量達到一定程度,就會出現大量的慢查詢,然后整個系統的cpu就跑滿了。所以,我們要經常查看慢查詢日志,找過sql的問題所在。
慢查詢配置項
slow-query-log={0|off|1|on} 是否開啟慢查詢日志功能
slow-query-time=10 設定的閥值,單位為秒,支持浮點數。當sql的執行時間超過該值,就會記錄在慢查詢日志中。如果設置為0,則會記錄所有查詢
slow_query_log_file=/mydata/data/hostname-slow.log 慢查詢日志存放的位置及文件名
log_queries_not_using_indexes=OFF 該項表示沒有使用索引的查詢也會記錄到慢查詢日志中去。
案例
現在,我將自己的mysql的慢查詢日志打開,并且將時間設置為0,記錄所有的SQL。然后來帶大伙看看慢查詢日志是怎樣的。
Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument # Time: 2020-05-31T12:00:01.895700Z # User@Host: blog[blog] @ localhost [] Id: 3 # Query_time: 0.000170 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 use blog; SET timestamp=1590926401; SET NAMES utf8mb4; # Time: 2020-05-31T12:00:01.902684Z # User@Host: blog[blog] @ localhost [] Id: 3 # Query_time: 0.006914 Lock_time: 0.006529 Rows_sent: 0 Rows_examined: 120 SET timestamp=1590926401; SELECT * FROM knowledge WHERE is_delete=0 AND star < 5 AND show_time <= 1590854400 ORDER BY show_time ASC LIMIT 1;
我們主要看Query_time行
Query_time:查詢時間
Lock_time:鎖表時間
Rows_sent:獲取的數據行
Rows_examined:掃描的數據行
關于MySQL的日志管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。