圖文結合帶你搞懂MySQL日志之General Query Log(通用查詢日志)
什么是通用查詢日志
通用查詢日志(General Query Log) 用來記錄用戶的所有操作,包括啟動和關閉MySQL服務、所有用戶的連接開始時間和截止時間、發給 MySQL 數據庫服務器的所有 SQL 指令等。當我們的數據發生異常時, 查看通用查詢日志,還原操作時的具體場景 ,可以幫助我們準確定位問題。
查看當前狀態
從general_log?可以看到通用查詢日志處于關閉狀態,從general_log_file可以看到日志的目錄以及文件名稱
啟動日志
- 方式1
修改 my.cnf 或者 my.ini 配置文件來設置。在 [mysqld] 組下加入log選項,并重啟MySQL服務。格式如下:
如果不指定目錄和文件名,通用查詢日志將默認存儲在MySQL數據目錄中的hostname.log文件中,hostname表示主機名。
- 方式2
查看日志
通用查詢日志是以文本文件的形式存儲在文件系統中的,可以使用文本編輯器直接打開日志文件。每臺MySQL服務器的通用查詢日志內容是不同的。
- 在Windows操作系統中,使用文本文件查看器;
- 在Linux系統中,可以使用vi工具或者gedit工具查看;
- 在Mac OSX系統中,可以使用文本文件查看器或者vi等工具查看。
可以看出,該日志非常清晰地記錄了客戶端的所有行為。
停止日志
修改my.cnf或者my.ini文件,把[mysqld]組下的general_log值設置為OFF或者把general_log一項注釋掉。修改保存后,再重啟MySQL服務,即可生效。
或是
刪除\刷新日志
如果數據的使用非常頻繁,那么通用查詢日志會占用服務器非常大的磁盤空間。數據管理員可以刪除很長時間之前的查詢日志,以保證MySQL服務器上的硬盤空間。
在 MySQL 中,可以使用 mysqladmin 命令來開啟新的通用查詢日志。新的通用查詢日志會直接覆蓋舊的查詢日志,不需要再手動刪除了。
mysqladmin 命令的語法如下:
需要注意的是,如果希望備份舊的通用查詢日志,必須先將舊的日志文件拷貝出來或者改名。然后,再執行 mysqladmin 命令。
除了上述方法之外,還可以手工刪除通用查詢日志。刪除之后需要重新啟動 MySQL 服務。重啟之后就會生成新的通用查詢日志。如果希望備份舊的日志文件,可以將舊的日志文件改名,然后重啟 MySQL 服務。
參考文章
- 《MySQL是怎樣運行的--從根兒上理解MySQL》—小孩子
- 4919(https://juejin.cn/book/6844733769996304392)