如果啟用一般查詢日誌和慢查詢日誌,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;