MySQL技術內幕之“日誌檔案”

weixin_34075551發表於2018-11-08

*:

MySQL例項啟動時會讀取引數檔案,根據檔案中的引數來進行初始化

檢視所有引數的命令:SHOW VARIABLES ,可以通過LiKE來過濾引數名:SHOW VARIABLES LIKE’innodb_buffer%’;

日誌檔案包括:錯誤日誌、二進位制日誌、慢查詢日誌、查詢日誌
這些日誌檔案可以幫助DBA對MySQL資料庫的執行狀態進行判斷,從而進行資料庫層面的優化。

一、錯誤日誌

   錯誤日誌檔案對MySQL的啟動、執行、關閉過程進行了記錄。DBA遇到問題時,應首先通過命令:
SHOW VARIABLES LIKE 'log_error';

來定位錯誤日誌檔案。預設情況下日誌名為伺服器的主機名。

二、慢查詢日誌

1、 可幫助DBA定位可能存在問題的SQL語句,從而進行SQL語句層面的優化。
例如:可以在MySQL啟動時設一個閾值,將執行時間超過該閾值的所有SQL語句都記錄到慢查詢日誌檔案中,DBA每隔一段時間對其進行檢查,確認有SQL語句需要進行優化,該閾值可以通過:long_query_time來設定,預設為10秒(大於10秒被記錄)。預設情況下,MySQL資料庫不啟動慢查詢日誌。

2、 還有一個引數log_queries_not_using_indexes可以記錄沒有使用索引的SQL語句。

   當越來越多的SQL查詢被記錄到慢查詢日誌檔案中,為了簡單直觀可使用MySQL資料庫提供的 mysqldumpslow命令,可以很好的解決問題:

例如:使用者需要得到執行時間最長的10條SQL語句,可以執行如下命令

mysqldumpslow   -s   all  -n  10  david.log

3、MySQL5.1開始講慢查詢放入slow.log表中,引數log_output指定了慢查詢輸出的格式,預設為FILE,可以設定為 TABLE ,就可以查詢MySQL架構下的clow.log表了。
引數log_output是動態的,並且是全域性的,因此使用者可以線上進行修改。

4、slow.log表儲存引擎預設為CSV引擎,對大資料量下的查詢效率可能不高,可以轉換為MyISAM引擎。

三、查詢日誌

  查詢日誌記錄了所有對MySQL資料庫請求的資訊,無論這些請求是否得到了正確的執行。預設檔名為:主機名.log 

如檢視一個查詢日誌:

tail  主機名.log

四、二進位制日誌

1、二進位制日誌檔案記錄了所有對MySQL資料庫進行更改的所有操作,當然不包括查詢這類操作。
通過命令:

SHOW  BINLOG  EVENT 

2、二進位制日誌主要有以下幾種作用:
①恢復:例如在一個資料庫全備檔案恢復後,使用者可以通過二進位制檔案進行point-in-time的恢復
②複製:其原理與恢復類似,通過複製和執行二進位制日誌使一臺遠端的MySQL資料庫(一般為slave 或 standby )與一臺MySQL資料庫(一般為master 或 primary)進行實時同步。
③審計:使用者可以通過二進位制日誌中的資訊進行審計,判斷是否有對資料庫進行注入的攻擊。

3、通過配置引數log-bin [=name] 可以啟動二進位制日誌(name 預設Wie主機名,字尾為二進位制日誌的序列號,所在路徑在資料庫所在目錄的 datadir )。

4、二進位制日誌檔案在預設情況下並沒有啟動

相關文章