圖文結(jié)合帶你搞懂MySQL日志之General Query Log(通用查詢?nèi)罩荆?/h1>
什么是通用查詢?nèi)罩?/h2>
通用查詢?nèi)罩荆℅eneral Query Log) 用來記錄用戶的所有操作,包括啟動和關(guān)閉MySQL服務(wù)、所有用戶的連接開始時間和截止時間、發(fā)給 MySQL 數(shù)據(jù)庫服務(wù)器的所有 SQL 指令等。當(dāng)我們的數(shù)據(jù)發(fā)生異常時, 查看通用查詢?nèi)罩荆€原操作時的具體場景 ,可以幫助我們準(zhǔn)確定位問題。
查看當(dāng)前狀態(tài)
從general_log?可以看到通用查詢?nèi)罩咎幱陉P(guān)閉狀態(tài),從general_log_file可以看到日志的目錄以及文件名稱
啟動日志
- 方式1
修改 my.cnf 或者 my.ini 配置文件來設(shè)置。在 [mysqld] 組下加入log選項,并重啟MySQL服務(wù)。格式如下:
如果不指定目錄和文件名,通用查詢?nèi)罩緦⒛J(rèn)存儲在MySQL數(shù)據(jù)目錄中的hostname.log文件中,hostname表示主機名。
- 方式2
查看日志
通用查詢?nèi)罩臼且晕谋疚募男问酱鎯υ谖募到y(tǒng)中的,可以使用文本編輯器直接打開日志文件。每臺MySQL服務(wù)器的通用查詢?nèi)罩緝?nèi)容是不同的。
- 在Windows操作系統(tǒng)中,使用文本文件查看器;
- 在Linux系統(tǒng)中,可以使用vi工具或者gedit工具查看;
- 在Mac OSX系統(tǒng)中,可以使用文本文件查看器或者vi等工具查看。
可以看出,該日志非常清晰地記錄了客戶端的所有行為。
停止日志
修改my.cnf或者my.ini文件,把[mysqld]組下的general_log值設(shè)置為OFF或者把general_log一項注釋掉。修改保存后,再重啟MySQL服務(wù),即可生效。
或是
刪除\刷新日志
如果數(shù)據(jù)的使用非常頻繁,那么通用查詢?nèi)罩緯加梅?wù)器非常大的磁盤空間。數(shù)據(jù)管理員可以刪除很長時間之前的查詢?nèi)罩荆员WCMySQL服務(wù)器上的硬盤空間。
在 MySQL 中,可以使用 mysqladmin 命令來開啟新的通用查詢?nèi)罩尽P碌耐ㄓ貌樵內(nèi)罩緯苯痈采w舊的查詢?nèi)罩荆恍枰偈謩觿h除了。
mysqladmin 命令的語法如下:
需要注意的是,如果希望備份舊的通用查詢?nèi)罩荆仨毾葘⑴f的日志文件拷貝出來或者改名。然后,再執(zhí)行 mysqladmin 命令。
除了上述方法之外,還可以手工刪除通用查詢?nèi)罩尽h除之后需要重新啟動 MySQL 服務(wù)。重啟之后就會生成新的通用查詢?nèi)罩尽H绻M麄浞菖f的日志文件,可以將舊的日志文件改名,然后重啟 MySQL 服務(wù)。
參考文章
- 《MySQL是怎樣運行的--從根兒上理解MySQL》—小孩子
- 4919(https://juejin.cn/book/6844733769996304392)