個人簡介:Java領域新星創作者;阿里云技術博主、星級博主、專家博主;正在Java學習的路上摸爬滾打,記錄學習的過程~
個人主頁:.29.的博客
學習社區:進去逛一逛~
MySQL日志
- ②⑩ MySQL日志:錯誤日志、二進制日志、查詢日志、慢查詢日志
- 1. 錯誤日志
- 2. 二進制日志
- 3. 查詢日志
- 4. 慢查詢日志
②⑩ MySQL日志:錯誤日志、二進制日志、查詢日志、慢查詢日志
1. 錯誤日志
錯誤日志
:
錯誤日志是MySQL中最重要的日志之一,它記錄了當mysqld
啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。當數據庫出現任何故障導致無法正常使用時,建議首先查看此日志。
該日志是默認開啟 的,默認存放目錄/var/log/
,默認的日志文件名為mysqld.log
。
-
🚀查看日志位置:
-
-
SHOW VARIABLES LIKE '%log_error%';
-
2. 二進制日志
二進制日志
:
二進制日志(BINLOG)記錄了所有的DDL(數據定義語言)語句和DML(數據操縱語言)語句,但不包括數據查詢(SELECT、SHOW)
語句。
二進制日志 - 作用
:
- ①災難時的數據恢復;
- ②MySQL的主從復制。在MySQL8版本中,默認二進制日志是開啟著的;
-
🚀查看二進制日志位置、參數:
-
-
SHOW VARIABLES LIKE '%log_bin%';
-
二進制日志 - 格式
:
- MySQL服務器提供了多種格式來記錄二進制日志:
-
-
🚀查看 默認的二進制日志格式:
-
-
-- ROW SHOW VARIABLES LIKE '%binlog_format%';
-
查看 二進制日志
:
由于日志是以二進制方式存儲的,不能直接讀取,需要通過二進制日志查詢工具mysqlbinlog 來查看:
# 查看命令(命令行)
mysqlbinlog [ 參數選項 ] logfilename#參數選項:
-d #指定數據庫名稱,只列出指定的數據庫相關操作。
-o #忽略掉日志中的前n行命令。
-v #將行事件(數據變更)重構為SQL語句
-vv #將行事件(數據變更)重構為SQL語句,并輸出注釋信息
刪除 二進制日志
:
對于比較繁忙的業務系統,每天生成的binlog數據巨大,如果長時間不清除,將會占用大量磁盤空間。
- 以下是清理二進制日志的 3種方式(命令行指令):
-
也可以在mysql的配置文件中配置二進制日志的過期時間,設置了之后,二進制日志過期會自動刪除。
-
-
-- 查看二進制日志的過期時間 SHOW VARIABLES LIKE '%binlog_expire_logs_seconds%';
-
3. 查詢日志
查詢日志
:
查詢日志中記錄了客戶端的所有操作語句,而二進制日志不包含查詢數據的SQL語句。默認情況下,查詢日志是未開啟
的。
-
🚀查看 查詢日志相關參數:
-
-
SHOW VARIABLES LIKE '%general%';
-
-
如果需要開啟查詢日志,可以修改MySQL配置文件
/etc/my.cnf
,添加以下內容: -
-
# 該選項用來開啟查詢日志,可選值:0或者1;0代表關閉,1代表開啟 general_log=1 #設置日志的文件名,如果沒有指定,默認的文件名為host_name.log general_log_file=mysql_query.log
-
4. 慢查詢日志
慢查詢日志
:
慢查詢日志記錄了所有執行時間超過參數long_query_time 設置值并且掃描記錄數不小于min_examined_row_limit 的所有的SQL語句的日志,默認未開啟。long_query_time 默認為10秒,最小為0,精度可以到微秒。
-
如果需要開啟或設置慢查詢日志,可以修改MySQL配置文件
/etc/my.cnf
,添加以下內容: -
-
# 該選項用來開啟慢查詢日志,可選值:0或者1;0代表關閉,1代表開啟 slow_query_log=1 #設置執行時間參數,默認為10秒,最小為0 long_query_time=2 #記錄執行較慢的管理語句 log_slow_admin_statements=1 #記錄執行較慢的未使用索引的語句 log_queries_not_using_indexes= 1
-