同大多數關係型資料庫一樣,日誌檔案是MySQL資料庫的重要組成部分。 MySQL有幾種不同的日誌文件,通常包括錯誤日誌文件,二進位日誌,通用日誌,慢查詢日誌,等等。這些日誌可以幫助我們定位mysqld內部發生的事件,資料庫效能故障,記錄資料的變更歷史,使用者恢復資料庫等等。本文主要描述通用查詢日誌。
1、MySQL日誌檔案系統的組成
a、錯誤日誌:記錄啟動、運作或停止mysqld時出現的問題。
b、通用日誌:記錄已建立的用戶端連線和執行的語句。
c、更新日誌:記錄變更資料的語句。此日誌在MySQL 5.1中已不再使用。
d、二進位日誌:記錄所有變更資料的語句。也用於複製。
e、慢查詢日誌:記錄所有執行時間超過long_query_time秒的所有查詢或不使用索引的查詢。
f、Innodb日誌:innodb redo log
缺省情況下,且所有日誌都建立於mysqld資料目錄中。
可以透過刷新日誌,來強制mysqld來關閉和重新開啟日誌檔案(或在某些情況下切換到一個新的日誌)。
當你執行一個FLUSH LOGS語句或執行mysqladmin flush-logs或mysqladmin refresh時,則日誌被老化。
對於存在MySQL複製的情況下,從複製伺服器將維護更多日誌文件,稱為接替日誌。
2、通用查詢日誌
日誌可以存放到一個文字檔案或表中,而所有連接和語句日誌則記錄到該條款或表,則未開啟該檔案或表,通用查詢日誌中未開啟。
透過--log[=file_name]或-l [file_name]選項啟動它。如果沒有給定file_name的值, 預設名稱是host_name.log。
mysqld依照它接收的順序記錄語句到查詢日誌。這可能與執行的順序不同。
不同於更新日誌和二進位日誌,它們在查詢執行後,但是任何一個鎖定釋放之前記錄日誌。
查詢日誌包含所有語句,而二進位日誌不包含只查詢資料的語句。
伺服器重新啟動和日誌刷新不會產生新的一般查詢日誌檔案。
3、通用查詢日誌的系統變數
log_output=[ #是否已啟用一般查詢日誌
general_log_file[=filename] Unix中,你可以透過下面的指令重新命名檔案
並建立一個新檔案: shell> mv hostname.log hostname-old.log
shell>中,伺服器開啟日誌檔案期間不能重新命名日誌檔案。必須先停止伺服器然後重新命名日誌檔案。然後重啟伺服器來建立新日誌檔案。
Sharp (www.php.cn)!