mysql查詢日誌分析 mysql日誌分析

2021-10-17 12:36:42 字數 1653 閱讀 7450

日誌檔案(log)就是乙個跟蹤記錄的列表,它可以協助我們時刻掌握系統及應用服務的動作狀態,在故障排查的時候提供最詳細準確地資訊,幫助我們快速查詢原因,減少我們憑主觀的經驗去猜測,這樣的答案更具有說服力,機器通常是不會撒謊的。任何的系統,無論是作業系統、資料庫、應用伺服器他們都會有自己的log檔案,而且根據功能性質的不同,又有分為不同種類的log。後面我們將要討論的mysql資料庫同樣也有自己的一套日誌紀錄檔案,可分為4種日誌——錯誤日誌、二進位制日誌、查詢日誌和慢查詢日誌。它們都有哪些作用,我們在實際工作中又將如何有效的使用這些log檔案呢?

這4種日誌檔案預設情況下都存放在$mysql_home/data目錄下面,我們也可以使用伺服器啟動選項來對日誌存放的位置以及名稱來進行自定義。下面中顯示了各種log檔案,錯誤日誌node1.err、二進位制日誌以mysql-bin開頭的16個檔案、查詢日誌node1.log、以及慢查詢日誌node1-slow.log。

1. 錯誤日誌 –log-error[=/path_to/file_name]

它記錄了mysql資料庫啟動關閉資訊,以及伺服器執行過程中所發生的任何嚴重的錯誤資訊。通常,當資料庫出現問題不能正常啟動,我們應當首先想到的就是檢視錯誤日誌。從下面可以看到此日誌檔案記錄了mysql資料庫的啟動和關閉資訊。

2. 二進位制日誌 –log-bin=[/path_to/file_name]

binary log檔案是以二進位制格式儲存的,我們需要借助mysqlbinlog這個工具進行檢視,該日誌裡面記錄的所有的ddl和dml語句,其中select語句除外。

以上顯示的是從位置232609開始到最後一次操作結束的binlog檔案裡記錄的內容。

在data目錄下會發現有16個binary log檔案,每次重啟服務都會重新生成乙個,或是檔案達到最到限度也會安順序自動生成下乙個檔案。在乙個繁忙的oltp系統中,每天會有大量的日誌生成,自然我們會想到它將會占用可觀的磁碟空間,所以我們有必要定期對其進行清理。下面介紹幾種方法。

option 1. mysql> reset master; (刪除所有binlog檔案,然後從新生成乙個從000001開始的檔案)

option 2. mysql> purge master logs to 『mysql-bin.000017′; (刪除mysql-bin.000017之前的所有日誌)

option 3. # mysqladmin flush-log (根據配置檔案my.cnf中的expire_logs_day引數,觸發日誌檔案更新,將從當前日期開始前多少天的日誌全部刪除)

3. 查詢日誌 –log[=/path_to/file_name]

查詢日誌記錄客戶端操作的所有sql語句,包括select查詢語句在內。(note: 查詢日誌紀錄的所有資料庫的操作,對於訪問頻繁的應用,該日誌對系統效能會一定影響,建議通常關閉此日誌。)

4. 慢查詢日誌 –log-slow-queries[=/path_to/file_name]

慢查詢日誌裡記錄了執行時間超過long_query_time引數值的sql語句。慢查詢日誌可以有效的幫助我們發現實際應用中sql的效能問題,找出執行效率低下的sql語句。

我們經常會看到論壇上面,人家在回答你問題之前,有些時候會讓你提供詳細的日誌資訊,然後進一步分析幫你解決問題,這就是乙個很好的解決問題的習慣和思路,做到有理有據,log就是我們查明真相的線索。了解了mysql的日誌之後,你也可以成為乙個地道的troublshooting的專家。

mysql慢查詢日誌分析

mysql 有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 10 log slow queries long quer...

mysql慢查詢日誌分析

我喜歡做一些系統效能優化事情,覺得這樣有種成就感,實現了自己的價值。所以經常到系統上去top netstat uptime看看系統執行的狀況。今天我對mysql資料庫進行索引建立。mysql的慢查詢日誌是我部署環境時就開啟了的。mysqldumpslow是對慢查詢日誌進行統計的工具,講一下有用的引數...

mysql慢查詢日誌分析

分類 mysql postgresql mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 10 log slo...