日志
錯誤日志
錯誤日志是mysql中最重要的日志之一,它記錄了當mysqld啟動和停止時,以及服務器在運行程序中發生任何嚴重錯誤時的相關資訊,當資料庫出現任何故障導致無法正常使用時,建議首先查看此日志,
該日志是默認開啟的,默認存放目錄:/var/log/,默認的日志檔案名為mysql.log,查看日志位置:
show variables like '%log_error%';
二進制日志(重點)
二進制日志,(binlog)記錄了所有的DDL(資料定義語言)陳述句和DML(資料操作語言)陳述句,但不包括資料查詢(select.show)
作用:
1,災難時資料恢復
2,mysql的主從復制
在mysql8版本中,默認二進制日志是開啟的,涉及到的引數如下:
show variables like '%log_bin%';
日志格式:
mysql服務器中提供了多種格式來記錄二進制日志,具體格式以及特點如下:
| 日志格式 | 含義 |
| statement | 基于SQL陳述句的日志記錄,記錄的是SQL陳述句,對資料進行修改的SQL都會記錄在日志檔案中 |
| row | 基于行的日志記錄,記錄的是每一行的資料變更,(默認) |
| minex | 混合了STATEMENT和ROW兩種格式,默認采用STATEMENT,在某些特殊情況下會自動切換為ROW進行記錄, |
查詢命令:
show variables like '%binlog_format%';
日志查看:
由于日志是以二進制方式存盤的,不能直接讀取,需要通過二進制日志查詢工具mysqlbinlog來查看,具體語法:
語法: mysqlbinlog [options] logo-files 1 log-files 2... 選項: -d,--database=name # 指定資料庫名稱,只列出指定的資料庫相關操作, -o,--offset=n # 忽略掉日志中的前n行命令, -r,--result-file=name # 將輸出的文本格式日志輸出到指定檔案, -s,--short-form #顯示簡單格式,省略掉一些資訊, --start-datetime=date1 --stop-datetime=date2 # 指定日期間隔內的所有日志, --start-positioin=pos1 --stop-position=pos2 #指定位置間隔內的所有日志, -v,# 將行事件重構為SQL陳述句 -vv,#將行事件重構為SQL陳述句,并輸出注釋資訊
日志洗掉:
對于比較繁忙的業務系統,每天生成的binlog資料巨大,對磁盤壓力也會隨之增大,如果長時間不清理,將會占用大量的磁盤空間,可以通過以下幾種方式清理日志:
| 指令 | 含義 |
| reset master | 洗掉全部 binlog 日志,洗掉之后,日志編號,將從 binlog.000001重新開始 |
| purge master logs to 'binlog.****** ’ | 洗掉 ****** 編號之前的所有日志 |
| purge master logs before ‘yyy-mm-dd hh24:mi:ss’ | 洗掉日志為 “yyyy-mm-dd hh24:mi:ss” 之前產生的所有日志 |
也可以在mysql的組態檔中配置二進制過期時間,設定之后,二進制日志過期就會自動洗掉
# mysql的組態檔 /etc/my.cnf show variables like '%binlog_expire_logs_seconds%';
查詢日志:
查詢日志中記錄了客戶端的所有操作陳述句,而二進制日志不包含查詢資料的sql陳述句,默認情況下,由于查詢日志記錄的資料較多,所以查詢日志是沒有開啟的,如果需要開啟查詢日志,可以設定以下配置:
查詢是否開啟狀態: show variables like '%general%' 修改MySQL的組態檔 /etc/my.cnf 檔案,添加如下內容: # 該選項用來開啟查詢日志,0關閉,1開啟 general_log=1 # 設定日志的檔案名,如果沒有指定,默認的檔案名為host_name.log general_log_file=mysql_query.log
慢查詢日志
慢查詢日志記錄了所有執行時機超過引數long_query_time 設定值并且掃描記錄數不小于min_examined_row_limit的所有的sql陳述句的日志,默認是未開啟的,long_query_time 默認是10s,最小為0,精度可以到微秒
#慢查詢日志 slow_query_log=1 #執行時間引數,2s long_query_time=2
默認的情況下,不會記錄管理陳述句,也不會記錄不使用索引進行查找的查詢,可以使用log_slow_admin_statements和更改此行為log_queries_not_using_indexes,如下所述:
# 記錄執行較慢的管理陳述句 log_slow_admin_statements=1 # 記錄執行較慢的未使用索引的陳述句 log_queries_not_using_indexes=1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/543711.html
標籤:其他
上一篇:資料庫索引原理及優化
