在任何一種數據庫中,都會有各類各樣的日誌,記錄着數據庫工做的方方面面,以幫助數據庫管理員追蹤數據庫曾經發生過的各類事件。在mysql中,有4種不一樣的日誌,分別是錯誤日誌、二進制日誌、查詢日誌和慢查詢日誌,這些日誌記錄着數據庫在不一樣方面的蹤影。mysql
一、錯誤日誌sql
錯誤日誌記錄着mysqld啓動和中止時,以及服務器在運行過程當中發生任何嚴重錯誤時的相關信息。當數據庫出現任何故障致使沒法正常使用時,能夠首先查看此日誌。數據庫
可使用--log-error[=file_name]選項來指定mysqld(MySQL服務器)保存錯誤日誌文件的位置。若是沒有給定file_name值,mysqld使用錯誤日誌名host_name.err(host_name爲主機名),並默認在參數DATADIR(數據目錄)指定的目錄中寫入日誌文件。服務器
二、二進制日誌工具
二進制日誌記錄了全部的DDL(數據定義語言)語句和DML(數據操縱語言)語句,可是不包括數據查詢語句。語句以「事件」的形式保存,它描述了數據的更改過程,此日誌對於災難時的數據恢復起着極其重要的做用。性能
當用--log-bin[=file_name]選項啓動時,mysqld將包含全部更新數據的SQL命令寫入日誌文件。若是沒有給出file_name值,默認名爲主機名後面跟"-bin"。測試
因爲日誌以二進制方式存儲,不能直接讀取,須要用mysqlbinlog工具來查看。日誌
1)往測試表emp中插入兩條測試記錄。事件
2)使用mysqlbinlog工具進行日誌查看,粗體字顯示步驟(1)所作的操做。file
三、查詢日誌
查詢日誌記錄了客戶端的全部語句,而二進制日誌不包含只查詢數據的語句。
當用--log[=file_name]或-l[file_name]選項啓動mysqld(MySQL服務器)時,查詢日誌開始被記錄。由於查詢日誌記錄的格式是純文本,所以能夠直接進行讀取。
1)首先在客戶端對數據庫作一些簡單操做,包括查詢和插入。
2)查看查詢日誌中記錄的客戶端的全部操做。
注意:log日誌中記錄了全部數據庫的操做,對於訪問頻繁的系統,此日誌對系統性能的影響較大,建議通常狀況下關。
四、慢查詢日誌
慢查詢日誌記錄了包含全部執行時間超過參數long_query_time(單位:秒)所設置值的SQL語句的日誌。
當用--log-slow-queries[=file_name]選項啓動mysqld(MySQL服務器)時,慢查詢日誌開始被記錄。
和錯誤日誌、查詢日誌同樣,慢查詢日誌記錄的格式也是純文本,能夠被直接讀取。
慢查詢日誌的設置和讀取過程:
1)首先查詢long_query_time的值
2)爲了方便測試,將修改慢查詢時間爲2秒。
3)依此執行下面兩個查詢語句。
第一個查詢:由於查詢時間低於2秒而不會出如今慢查詢日誌中:
第二個查詢:由於查詢時間大於2秒而應該出如今慢查詢日誌中:
4)查看慢查詢日誌
從上面日誌中,能夠發現查詢時間超過2秒的SQL,而小於2秒的則沒有出如今日誌中。若是慢查詢日誌中記錄內容不少,可使用mysqldumpslow工具來對慢查詢日誌進行分類彙總。
注意:慢查詢日誌對於咱們發現應用中有性能問題的SQL頗有幫助,建議正常狀況下,打開此日誌並常常查看分析。
總結:
MySQL最經常使用的4種日誌類型:
錯誤日誌、二進制日誌、查詢日誌和慢查詢日誌
系統故障時,建議首先查看錯誤日誌,以幫助用戶迅速定位故障緣由。
若是要記錄數據的變動、數據的備份、數據的複製等操做時,二進制日誌必須打開,以幫助用戶進行數據恢復等操做。
若是但願記錄數據庫發生的任何操做,則須要用--log將查詢日誌打開,此日誌默認關閉,通常狀況下建議不要打開此日誌,以避免影響系統總體性能。
若是但願查看系統的性能問題,但願找到有性能問題的SQL語句,則須要用--log-slow-queries打開慢查詢日誌。