如果啟用一般查詢日誌和慢查詢日誌,MySQL 伺服器可彈性控制寫入這些日誌的輸出目的地。日誌項目的可能目的地為日誌檔案或 mysql 系統資料庫中的 general_log 和 slow_log 表格。您可以選擇檔案輸出、表格輸出或兩者。
log_output 系統變數指定日誌輸出的目的地。設定此變數本身並不會啟用日誌;必須單獨啟用這些日誌。
如果在啟動時未指定
log_output,則預設的日誌記錄目的地為FILE。如果在啟動時指定了
log_output,則其值為從TABLE(記錄至表格)、FILE(記錄至檔案) 或NONE(不記錄至表格或檔案) 中選取的一或多個以逗號分隔的字詞。如果存在NONE,則優先於任何其他指定詞。
general_log 系統變數控制將記錄寫入所選日誌目的地的一般查詢日誌。如果在伺服器啟動時指定了 general_log,則可選擇性採用 1 或 0 的引數來啟用或停用日誌。若要為檔案記錄指定預設檔案名稱以外的檔案名稱,請設定 general_log_file 變數。同樣地,slow_query_log 變數會控制將記錄寫入所選目的地的慢查詢日誌,而設定 slow_query_log_file 會指定檔案記錄的檔案名稱。如果啟用任一日誌,伺服器會開啟對應的日誌檔案並將啟動訊息寫入其中。但是,除非選取 FILE 日誌目的地,否則不會將其他查詢記錄到檔案中。
範例
若要將一般查詢日誌項目寫入日誌表格和日誌檔案,請使用
--log_output=TABLE,FILE來選取這兩個日誌目的地,並使用--general_log來啟用一般查詢日誌。若要將一般查詢和慢查詢日誌項目僅寫入日誌表格,請使用
--log_output=TABLE來選取表格作為日誌目的地,並使用--general_log和--slow_query_log來啟用這兩個日誌。若要將慢查詢日誌項目僅寫入日誌檔案,請使用
--log_output=FILE來選取檔案作為日誌目的地,並使用--slow_query_log來啟用慢查詢日誌。在此情況下,由於預設的日誌目的地為FILE,因此您可以省略log_output設定。
SHOW CREATE TABLE mysql.general_log; SHOW CREATE TABLE mysql.slow_log;
SET @old_log_state = @@GLOBAL.general_log; SET GLOBAL general_log = 'OFF'; ALTER TABLE mysql.general_log ENGINE = MyISAM; SET GLOBAL general_log = @old_log_state;USE mysql; DROP TABLE IF EXISTS general_log2; CREATE TABLE general_log2 LIKE general_log; RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;