MYSQL general_log日志


一、功能

開啟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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM