MySQL資料庫中的日誌檔案---(1)錯誤日誌

junsansi發表於2011-06-09

  MySQL生成或相關聯的日誌檔案種類繁多,本節重點關注與MySQL資料庫服務相關的幾類日誌檔案:

  • 錯誤日誌(error log):記錄MySQL服務程式mysqld在啟動/關閉或執行過程中遇到的錯誤資訊;
  • 查詢日誌(query log):又可分成兩類:
    • 普通查詢日誌(general query log):記錄客戶端連線資訊和執行的SQL語句資訊;
    • 慢查詢日誌(slow query log):記錄執行時間超出指定值(long_query_time)的SQL語句;
  • 二進位制日誌(binary log):記錄資料被修改的相關資訊;

1. 錯誤日誌(Error Log)

  錯誤日誌,顧名思義,當然就是記錄錯誤資訊的日誌,不過本小節中要提到的錯誤日誌檔案,並不僅僅是記錄錯誤資訊,MySQL服務程式啟動/關閉的資訊也會被記錄進來,也不是說什麼錯誤都會記錄,只有服務程式執行過程中發生的關鍵(critical)錯誤會被記錄,另外mysqld程式發現某些表需要自動檢查或修復的話,也會丟擲相關資訊到該日誌檔案。

    提示:

    MySQL中的error log日誌檔案,其實功能跟ORACLE中的alert極為相似,不過由名稱也看得出MySQL果然還是嫩了點兒,error logs中即不全是error資訊,也並非所有error都被記入log,這名稱就有點兒名不副實了。還是ORACLE高明--alert,就是提示你要注意,咋理解都沒毛病。

  在某些作業系統上執行的mysql崩潰時,會將堆疊的跟蹤資訊(stack trace)丟擲到錯誤日誌檔案中,這些跟蹤資訊比較有利於故障排查。

  啟用mysqld時附加--log-error引數(或配置log-error系統環境變數),指定錯誤日誌的路徑及檔名,如不指定的話,預設檔名為[host_name].err,儲存在mysql的data資料夾下。執行FLUSH LOGS命令後,mysql會將當前錯誤日誌檔案附加-old儲存,而且建立一個新的空錯誤日誌檔案(僅限指定--log-error的情況下會自動建立新檔案)。

    提示:

    Windows環境中,事件和錯誤訊息也會被寫入windows的事件日誌中,以應用程式的形式儲存,並可能被標記為警告(Warning)或注意(Note),不過資訊類的訊息不會寫入事件日誌。

  --log-warnings引數(或log-warnings系統環境變數)用來控制警告資訊是否記錄,預設值為1即啟用,指定為0時表示禁用。如果指定該引數值大於1,則連線失敗的訊息也會寫入錯誤日誌。

  使用mysqld_safe命令啟動mysqld,mysqld_safe會將錯誤訊息寫到日誌檔案或者系統日誌,在5.1.20版本之前,mysqld_safe的操作記錄到檔案;從5.1.20版本開始,mysqld_safe提供了兩個新增錯誤日誌選項:--syslog和--skip-syslog。從5.1.21版本開始,預設的不記錄日誌選項為--skip-syslog,該選項相容5.1.20版本之前的錯誤日誌行為。要明確指定輸出的錯誤日誌檔案,就通過mysqld_safe啟動服務時附加--log-error[=file_name]引數,如果要使用syslog,則指定--syslog引數。

  對於記錄到syslog的訊息,來自mysqld_safe和mysqld的訊息會分別打上"mysqld_safe"或"mysqld"的標籤,從5.1.21版本開始,還可以通過--syslog-tag=[tag]的方式指定標籤的名稱,修改後實際記錄的標籤形式會變成"mysql_safe-[tag]"和"mysqld-[tag]"。

  如何是使用mysqld_safe命令啟動mysqld程式,並且mysqld意外崩潰,則mysqld_safe將嘗試重新啟動mysqld程式,並且向錯誤日誌中記錄"restarted mysqld"資訊。

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

相關文章