MySQL——日誌管理
阿新 • • 發佈:2021-08-02
一、MySQL日誌型別 1、錯誤:--log--error ---------------------*** host_name.err 2、常規: --general_log host_name.log general_log 3、慢速查詢: --slow_query_log --long_query_time ---------------------*** host_name-slow.log slow_log 4、二進位制: --log-bin --expire-logs-days ---------------------*** host_name-bin.000001 5、審計: --audit_log --audit_log_file audit.log 二、MySQL日誌配置 (1)錯誤日誌 [mysqld] log-error=/data/mysql/mysql.log 檢視配置: show variables like '%log%error%'; 作用: 記錄MySQL資料庫的一般狀態資訊和報錯資訊,是我們對於資料庫常規報錯處理的常用日誌。 (2)一般查詢日誌 [mysqld] general_log=on general_log_file=路徑 作用: 記錄所有執行成功的SQL語句資訊。 檢視方式: show variables like '%gen%'; (3)二進位制日誌(依賴於SQL層,不依賴於儲存引擎)(不記錄select,只記錄變化) 1、記錄已經執行完成的語句和已經完成的事務 2、功能:備份和時間點恢復、主從 3、二進位制日誌的控制和操作: a: 開啟二進位制日誌: vim /etc/my.cnf [mysqld] log-bin=“datadir”/mysql-bin(檔名字首)(不寫路徑預設是datadir下) b: 定義記錄方式: statement: 記錄執行的語句 row(推薦):以行模式記錄---->記錄所有行的變化日誌 mixed: c: 設定: vim /etc/my.cnf [mysqld] log-bin=“datadir”/mysql-bin binlog-format=row d: 操作: 1)檢視二進位制日誌: --檢視檔案本身: --作業系統層面檢視: ls -l 重啟資料庫的時候、執行flush命令的時候會滾動----生成新的檔案重新記錄 --mysql命令列中檢視: show master status;----檢視當前正在使用的二進位制日誌 show binary logs;----檢視所有存在的二進位制日誌 --檢視檔案內容: ---- 事件events: 命令的最小發生單元 ---- 事件的位置號position: 每個事件在二進位制檔案中的相對位置號就是position號 ---- 檢視二進位制日誌內容: --檢視所有內容: 進入目錄下: mysqlbinlog mysql-bin.000003 --擷取內容: 1 show master status; 2 show binlog events in 'mysql-bin.000003' ; 3 mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 匯出:mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 >/tmp/inc.sql 4 匯出的內容可以用來恢復: 1)使用source 2)使用 < 2)刪除二進位制日誌: 在配置檔案中加上過期時間: SET GLOBAL expire_logs_days=30;(天) 或者: PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; 根據檔名刪除日誌: PURGE BINARY LOGS TO 'mysql-bin.0000010'; (4)慢查詢日誌 1、功能:記錄所有條件內的慢的SQL語句 2、作用:定位問題的工具日誌 3、控制: vim /etc/my.cnf [mysqld] slow_query_log=on ------------------------------開啟 slow_query_log_file=/data/slow.log -------------定義檔案 long_query_time=10 -----------------------------超過30秒為操作慢的語句 min_examined_row_limit=10-----------------------查詢檢查返回少於該引數指定行的SQL語句不被記錄到慢日誌 log_queries_not_using_indexes-------------------不使用索引的慢查詢日誌是否記錄到索引 4、處理: mysqldumpslow -s c -t 10 /database/mysql/slow-log 輸出記錄次數最多的10條SQL語句,其中: -s: 表示按照何種方式排序,c t l r分別為按照記錄次數、時間、查詢時間、返回的記錄數來排序, ac at al ar為相應的倒敘 -t: 返回前面多少條的資料 -g: 後邊可以接正則匹配模式,大小寫不敏感