今天天氣又開始變得很熱了,雖然很熱很浮躁,但是不能不學習,我在北京向各位問好。今天給大家分享一點關於數據庫日志方面的東西,因為日志不僅討厭而且還很重要,在開發中時常免不了與它的親密接觸,就在前幾天公司開發環境中的幾張數據表不知道被誰誤刪了,想看看日志但是一直沒有過這方面的經歷,於是望門卻步了。
MySQL數據庫官方文檔:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html
一、MySQL日志分類:日志文件記錄了影響數據庫的各種類型活動,MySQL數據庫常見的日志文件分類。
- 錯誤日志(Error log)
- 慢查詢日志(Slow query log)
- 二進制日志
- 查詢日志
二、錯誤日志詳解:MySQL錯誤日志是記錄MySQL 運行過程中較為嚴重的警告和錯誤信息,以及MySQL每次啟動和關閉的詳細信息。
【查看MySQL數據庫錯誤日志存放的位置】
三、慢查詢日志詳解:MySQL慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指SQL語句運行時間超過long_query_time
值的SQL,則會被記錄到慢查詢日志文件中。long_query_time
的默認值為10秒,意思是運行10s以上的SQL語句都會被MySQL數據庫記錄到慢日志文件中去。但是默認情況下,MySQL數據庫並不啟動慢查詢日志,需要我們手動來設置這個參數,當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日志會或多或少帶來一定的性能響。慢查詢日志支持將日志記錄寫入文件,也支持將日志記錄寫入數據庫表中,當然,這些情況你必須得一個一個來手動設置才行。
【查看MySQL數據庫默認的閥值時間】
【查看MySQL數據庫是否開啟慢查詢日志記錄,默認是關閉的】
【開啟MySQL數據庫慢查詢日志】
【好了,到這兒如果你已經開啟了MySQL數據庫的慢查詢日志,則可以查看慢查詢日志存放的位置】
更該慢查詢日志的存儲方式,因為默認是將慢查詢日志記錄到文件類型中的,如果你想將這些日志記錄到數據表中,則可以通過如下設置。
【查看慢查詢日志的默認存儲方式】
【改變MySQL數據庫慢查詢日志的存儲方式為:TABLE】
好了,走到這步我們完全把MySQL數據庫的慢查詢日志的開啟和一些常見的設置給各位簡單介紹了一下。下面我們來測試一下慢查詢日志,因為慢查詢日志在開發中可以幫助我們記錄一些執行時間比較長的SQL語句,我們可以通過它來優化哪些檢索語句。這里我簡單模擬一下慢查詢,使用MySQL數據庫的sleep(N)函數來假裝讓執行語句停留10秒,最后我們可以到記錄慢查詢日志的數據表中看到這條記錄。
對於日志這塊的學習,我還在繼續,最后在這兒留點希望吧,"如何在日志文件中快速的定位和提取有用的信息,還有當執行誤刪庫和表的操作時如何通過日志恢復"等這些問題我一直在不斷的在學習,如果哪位老哥有這方面的經驗或資料,可以傳授我一點兒,萬分感激。