MySQL資料庫中的日誌檔案---(4)配置日誌檔案輸出路徑

junsansi發表於2011-10-10

2.3 配置查詢日誌輸出路徑

  從5.1.6版本開始,MySQL提供了更靈活的方式控制日誌檔案的輸出以及輸出路徑。MySQL的標準日誌(特指general_log和slow_log),即可以輸出到檔案,同時也能夠以表的形式儲存在資料庫mysql中的同名表內,而在5.1.6版本之前,只記錄日誌到檔案。

    提示:

    從5.1.6版本開始,日誌表會在安裝過程中隨其它系統表一同建立。如果是從5.1.6之前的版本升級而來,那麼DBA需要注意,要手動升級系統表,以確保相關日誌表存在。

  當前,日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案。

  不過,記錄到系統表當然也有它的好處,比如說這類表可以通過簡單的授權,即可讓所有連線到MySQL資料庫的使用者檢視到日誌中記錄的內容,而且日誌表可以通過SQL語句訪問,這樣也能夠比較便捷的通過SQL語句的強大功能進行資料過濾,這都是日誌檔案不易做到的功能。

2.3.1 服務啟動時進行配置

  MySQL的命令列在啟動時可以載入很多引數,其中就提供了一個日誌專用的引數--log-output,用來指定日誌檔案的輸出方式,注意,說的是輸出方式,也就是說到底是記錄到作業系統中的檔案,還是記錄到資料庫系統中的專用表。

  --log-output引數可選值有三個:

      
  • TABLE:記錄到資料庫中的日誌表;
  •   
  • FILE:記錄到日誌檔案,預設值即為FILE (在5.1.6到5.1.20版本時,預設值為TABLE);
  •   
  • NONE:不記錄。

  上述引數值在設定時可以同時指定多個,相互之間以","逗號分隔即可。

  在指定--log-output引數值不為NONE的基礎上,才有可能繼續日誌檔案輸出路徑的設定,要控制普通查詢日誌或是慢查詢日誌檔案的生成,又有另外的引數:

      
  • --general_log:控制是否生成普通查詢日誌,可選值有兩個:1表示啟用,0表示禁用,預設值為:0,不過當指定了該引數而不指定引數值時,預設值為1;
  •   
  • --general_log_file:5.1.29版本後開始支援該引數,用來指定普通查詢日誌檔案的檔名及輸出路徑,預設檔名為[host_name].log;
  •   
  • --slow_query_log:控制是否生成慢查詢日誌,可選值有兩個:1表示啟用,0表示禁用,預設值為:0,不過當指定了該引數而不指定引數值時,預設值為1;
  •   
  • --slow_query_log_file:5.1.29版本後開始支援該引數,用來指定慢查詢日誌檔案的檔名及輸出路徑,預設檔名為[host_name]-slow.log:

    提示:

    在5.1.29版本之前,沒有--general_log_file和--slow_query_log_file這兩個引數,控制檔名及輸出路徑是通過--log和--log-slow-queries兩個引數。
      
  • --log:指定普通查詢日誌的輸出路徑,並啟用日誌輸出功能,預設檔名為[host_name].log,該引數在5.1.29版本後廢棄;
  •   
  • --log-slow_queries:指定慢查詢日誌的輸出路徑,並啟用日誌輸出功能,預設檔名為[host_name]-slow.log,該引數在5.1.29版本後廢棄。

  文學描述如果覺著不夠清晰,那就看下面幾個例子再強化一下吧,比如說:

      
  • 僅啟用普通查詢日誌,並記錄到日誌檔案和日誌表,則啟動mysql服務時設定引數如下:
    --log-output=TABLE,FILE --general_log 
      
  • 啟用普通查詢日誌和慢查詢日誌,日誌記錄到資料庫中的日誌表,啟動mysql服務時設定引數如下:
    --log-output=TABLE --general_log --slow_query_log
      
  • 僅啟用慢查詢日誌,記錄到日誌檔案,設定引數如下:
    --log-output=FILE --slow_query_log
      
  • 僅啟用慢查詢日誌,記錄到日誌檔案,並指定輸出路徑,設定引數如下:
    --log-output=FILE --slow_query_log --slow_query_log_file=/data/mysql/logs/slow.log

2.3.2 服務執行中進行配置

  MySQL提供了非常多的系統環境變數,用來控制MySQL服務執行時的狀態。

  其中,有不少的系統變數與MySQL命令列中的引數相似度極高,甚至包括名稱、功能、引數值語法等都一模一樣,如果要說有區別的話,就是命令列引數是在命令執行時呼叫,一經設定,除非重新執行命令列,否則無法修改,而很多系統環境變數,則支援服務執行過程中進行動態的修改,這其中,就包括與日誌檔案配置相關的一些引數:

      
  • log_output:
  •   
  • general_log&slow_query_log:
  •   
  • general_log_file&slow_query_log_file:

  上面這幾個引數均支援全域性動態修改,引數的功能與前面命令列中同名引數完全相同,就不多說了,著重描述下面這個引數:

      
  • sql_log_off:可選引數值為ON/OFF(1/0亦可,MySQL系統環境變數的設定非常靈活,將另起章節專門描述),用來指定是否啟用/禁用當前會話執行的語句記錄到普通查詢日誌,預設值為OFF。該引數是個會話級引數,使用者必須要擁有SUPER許可權才能夠設定該選項。

============================================
連載:
MySQL資料庫中的日誌檔案---(3)慢查詢日誌
MySQL資料庫中的日誌檔案---(2)普通查詢日誌
MySQL資料庫中的日誌檔案---(1)錯誤日誌

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-708914/,如需轉載,請註明出處,否則將追究法律責任。

相關文章