MYSQL general_log日誌
阿新 • • 發佈:2020-08-11
一、功能
開啟general_log,會將所有到達Mysql Server的SQL語句記錄。
一般不會開啟開功能,因為log的量會非常龐大。
但個別情況下可能會臨時的開一會兒general log以供排障使用。
例如:
不清楚程式執行了哪些sql語句,但是又要排除錯誤,找不到原因。可以短暫的開啟general log日誌。
二、開啟
mysql5.0版本,如果要開啟slow log、general log,需要重啟。
從MySQL5.1.6版開始,general query log和slow query log開始支援寫到檔案或者資料庫表兩種方式。
並且日誌的開啟,輸出方式的修改,都可以在Global級別動態修改。
方式一:更改my.cnf配置檔案
grep general_log /etc/my.cnf
general_log = 1
general_log_file = /tmp/general.log
- 重新啟動mysql,這個操作相當於是永久生效。
- 當然這種方式是不允許在生產上採用的。因為要重啟mysql,會中斷mysql的業務。同時general.log會記錄所有的關於mysql的DDL和DML語句,非常消耗資源,一般都是在協助排除mysql故障時,臨時短暫的開啟幾分鐘。事後都要關閉的。
方法二:在mysql命令控制檯操作
/* 需要root使用者才有訪問此檔案的許可權 */ # 檢視狀態 show global variables like '%general%'; -- 輸出:general_log | OFF 預設是關閉的 # 開啟 -- 設定日誌檔案儲存位置 set global general_log_file='/tmp/general_log'; -- 開啟日誌功能 set global general_log=on; -- 檢視狀態 show global variables like '%general%'; -- 輸出:general_log | ON
方法三:將日誌儲存在mysql資料庫general_log表中
# 設定輸出型別為 table
set global log_output='table';
# 開啟日誌功能
set global general_log=on;
# 切換到資料庫:mysql
use mysql;
# 設定輸出型別為 table
select * from general_log;
指令總結
# 檢視日誌是否開啟 show variables like 'general_log'; # 檢視日誌輸出型別 table或file show variables like 'log_output'; # 檢視日誌檔案儲存位置 show variables like 'general_log_file'; # 設定日誌檔案儲存位置 set global general_log_file='/tmp/general_log'; # 開啟日誌功能 set global general_log=on; # 設定輸出型別為 table set global log_output='table'; # 設定輸出型別為file set global log_output='file';
三、關閉
SET GLOBAL general_log = 'OFF';
四、清空general_log.CSV
# 找到general_log.CSV檔案
cat /dev/null > general_log.csv