MySQL資料庫中的日誌檔案---(2)普通查詢日誌

junsansi發表於2011-09-27

2.1 普通查詢日誌(The General Query Log)

  普通查詢日誌記錄mysqld所做的操作,比如當客戶端連線或斷開連線時,伺服器都會向該檔案中寫入相關資訊,客戶端發出的SQL語句也會被記錄到普通查詢日誌中。通過該日誌檔案可以查詢客戶端都提交了什麼,這點對DBA會很有幫助,舉例來說DBA懷疑客戶端執行的操作有問題,就可以通過普通查詢日誌確定客戶端究竟執行的是什麼。

  Mysqld將接收到的語句按照接收的順序(注意不是執行順序)寫到查詢日誌檔案中。

  控制普通查詢日誌檔案的輸出主要有下列幾點:

      
  • 在5.1.6版本之前,普通查詢日誌只能記入作業系統檔案,要啟用日誌記錄功能,可以在啟動mysqld程式時附加--log[=file_name]引數(或簡寫形式-l [file_name]);
  •   
  • 自5.1.6版本起,查詢日誌也可寫到資料庫系統中的專用表;
  •   
  • 自5.1.6版本起,啟用mysqld程式時附加--log[=file_name]或-l [file_name]引數啟用查詢日誌記錄功能,通過--log-output指定日誌輸出型別,有表(TABLE)和日誌檔案(FILE)兩個選項;
  •   
  • 自5.1.12版本起,新增--general_log[={0|1}]引數指定普通查詢日誌的輸出狀態,用來啟用或禁用普通查詢日誌,預設值為1即啟用,指定值為0時,表示禁用普通查詢日誌。
  •   
  • 自5.1.29版本起,新增--general_log_file=file_name指定日誌檔名,原--log和-l引數被廢棄。

  如果指定引數時沒有給查詢日誌指定檔名,則預設檔名為host_name.log,儲存在mysql的data目錄下。

  MySQL資料庫執行時也可以控制查詢日誌的輸出,主要通過系統環境變數:

      
  • general_log:設定值為0表示禁用,設定值為1表示啟用;
  •   
  • general_log_file:設定日誌檔案儲存路徑及檔名;
  •   
  • log-output:控制輸出型別,注意如果設定該引數值為"NONE",那麼即使上面兩個引數均啟用日誌輸出,也不會有任何時間真正被輸出,如果要輸出日誌到檔案,那麼log-output引數值中必須包含有"FILE"引數值。

  MySQL服務重新啟動,或者重新整理日誌都不會生成新的普通查詢日誌檔案,要生成新的日誌檔案,UNIX系統下可以通過mv命令,例如:

    shell> mv host_name.log host_name-old.log

    shell> mysqladmin flush-logs

    shell> cp host_name-old.log backup-directory

    shell> rm host_name-old.log

  如果是windows平臺的話,在5.1.3版本之間,資料庫系統執行過程中是不能修改日誌檔名的,必須停止服務,然後重命令檔案,然後再重啟服務。

  從5.1.12版本開始,可以實時啟用或禁用普通查詢日誌,不需要重啟服務,例如:

    SET GLOBAL general_log = ¨OFF¨;

    SET GLOBAL general_log = ¨ON¨;

  如果要啟用或禁用某個會話產生的普通查詢日誌,可以通過在會話級設定SQL_LOG_OFF引數的值為OFF/ON來控制。
=================================================
連載:
MySQL資料庫中的日誌檔案---(1)錯誤日誌

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

相關文章