常規查詢日誌

通用查詢日誌包含來自客戶端連線,斷開連線和查詢的常規資訊列表。它對於除錯是非常寶貴的,但它卻成為效能的障礙(引用?)。

一般查詢日誌的示例檢視如下所示:

http://i.stack.imgur.com/3dWFH.jpg

要確定當前是否正在捕獲常規日誌:

SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.

要確定捕獲檔案的檔名:

SELECT @@general_log_file; -- Full path to capture file

如果未顯示檔案的完整路徑,則檔案存在於 datadir 中。

Windows 示例:

+----------------------------------------------------------+
| @@general_log_file                                       |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+

Linux:

+-----------------------------------+
| @@general_log_file                |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+

當對 general_log_file GLOBAL 變數進行更改時,新日誌將儲存在 datadir 中。但是,通過檢查變數可能不再反映完整路徑。

如果配置檔案中沒有 general_log_file 的條目,它將預設為 datadir 中的 @@hostname.log。

最佳做法是關閉捕獲。將日誌檔案儲存到備份目錄,其檔名反映捕獲的開始/結束日期時間。如果該檔案沒有發生檔案系統*移動,*則刪除先前的檔案。為日誌檔案建立一個新檔名並開啟捕獲(全部顯示如下)。如果你現在想要捕獲,最佳實踐還包括仔細確定。通常,捕獲為 ON 僅用於除錯目的。

備份日誌的典型檔案系統檔名可能是:

/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log

其中日期和時間是檔名的一部分作為範圍。

對於 Windows,請注意以下序列並進行設定更改。

SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off

Linux 類似。這些將代表動態變化。任何重啟伺服器都會獲取配置檔案設定。

對於配置檔案,請考慮以下相關變數設定:

[mysqld]
general_log_file = /path/to/currentquery.log
general_log      = 1

另外,變數 log_output 可以配置為 TABLE 輸出,而不僅僅是 FILE。為此,請參閱目的地

請參閱 MySQL 手冊頁 常規查詢日誌