MySQL日誌

MySQL日誌

1.1錯誤日誌

是MySQL中最重要的日誌,當MySQL服務啓動中止時,以及其餘運行過程當中發生錯誤的信息,能夠查看此日誌。mysql

show variables like 'log_error';

image-20210212151732602

2.2 二進制日誌

二進制日誌(binLog)記錄了全部DLL語句(數據庫表結構以及定義),還有DML語句(數據操做語言)增刪改。sql

二進制日誌默認沒有開啓,須要本身打開數據庫

先找到MySQL配置文件地址工具

#配置開啓binlog日誌, 日誌的文件前綴爲 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin

#配置二進制日誌的格式
binlog_format=STATEMENT //四個參數能夠配置
日誌格式
STATEMENT

記錄的都是SQL語句,當數據進行修改都會被記錄,在主從複製的時候,會將日誌解析成爲源文本,再執行一遍。日誌

查看日誌文件 :code

1554079717375

mysqlbin.index : 該文件是日誌索引文件 , 記錄日誌的文件名;orm

mysqlbing.000001 :日誌文件blog

查看日誌內容 :索引

mysqlbinlog mysqlbing.000001;
ROW

會記錄每一行的數據變化,假如更新整個表,會記錄每一行的數據變動。it

若是日誌格式是 ROW , 直接查看數據 , 是查看不懂的 ; 能夠在mysqlbinlog 後面加上參數 -vv

mysqlbinlog -vv mysqlbin.000002
MIXED

這是默認的數據格式,就是混合了STATEMENT和ROW兩種格式,默認狀況下采用STATEMENT,可是在特殊狀況下會用ROW,MIXED能採用他們的優勢,避免缺點。

日誌刪除

比較大的系統,若是日誌不進行刪除會消耗大量磁盤空間。

方式一

經過Reset Master指令刪除所有binlog日誌,刪除之後將從xxxx.0000001開始

Reset Master //刪除指令
方式二

執行指令 purge master logs to 'mysqlbin.******' ,該命令將刪除 ****** 編號以前的全部日誌。

方式三

執行指令 purge master logs before 'yyyy-mm-dd hh24:mi:ss' ,該命令將刪除日誌爲 "yyyy-mm-dd hh24:mi:ss" 以前產生的全部日誌 。

方式四

設置參數 --expire_logs_days=# ,此參數的含義是設置日誌的過時天數, 過了指定的天數後日志將會被自動刪除,這樣將有利於減小DBA 管理日誌的工做量。

配置以下 :

1554125506938

查詢日誌

查詢日誌中記錄了客戶端的全部操做語句,而二進制日誌不包含查詢數據的SQL語句。

默認狀況下, 查詢日誌是未開啓的。若是須要開啓查詢日誌,能夠設置如下配置 :

#該選項用來開啓查詢日誌 , 可選值 : 0 或者 1 ; 0 表明關閉, 1 表明開啓 
general_log=1
#設置日誌的文件名 , 若是沒有指定, 默認的文件名爲 host_name.log 
general_log_file=file_name
慢查詢日誌

慢查詢日誌記錄了全部執行時間超過參數 long_query_time 設置值而且掃描記錄數不小於 min_examined_row_limit 的全部的SQL語句的日誌。long_query_time 默認爲 10 秒,最小爲 0, 精度能夠到微秒。

文件格式和日誌

慢查詢日誌默認是關閉的 。能夠經過兩個參數來控制慢查詢日誌 :

# 該參數用來控制慢查詢日誌是否開啓, 可取值: 1 和 0 , 1 表明開啓, 0 表明關閉
slow_query_log=1 

# 該參數用來指定慢查詢日誌的文件名
slow_query_log_file=slow_query.log

# 該選項用來配置查詢的時間限制, 超過這個時間將認爲值慢查詢, 將須要進行日誌記錄, 默認10s
long_query_time=10

若是慢查詢日誌內容不少, 直接查看文件,比較麻煩, 這個時候能夠藉助於mysql自帶的 mysqldumpslow 工具, 來對慢查詢日誌進行分類彙總。

相關文章
相關標籤/搜索