常規查詢日誌
通用查詢日誌包含來自客戶端連線,斷開連線和查詢的常規資訊列表。它對於除錯是非常寶貴的,但它卻成為效能的障礙(引用?)。
一般查詢日誌的示例檢視如下所示:
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 手冊頁 常規查詢日誌 。