MySQL日誌文件主要有錯誤日誌、慢查詢日誌、查詢日誌、二進制日誌。這篇筆記的定位是各種日誌文件的開啓和參數的解釋
1 .錯誤日誌(error log)
用來記錄MySQL的啓動和關閉以及重要的錯誤信息。
啓動時參數配置文件中配置:
#開啓並指定錯誤日誌文件所在目錄及其名稱 ,默認時爲主機名+.err
log_error = /var/log/mysql/lzg-Lenovo-G40-70m.err
2 .慢查詢日誌( slow query log)
用來記錄查詢時間超過long_query_time或者沒有使用索引的查詢語句
啓動時參數配置文件中配置:
#啓動slow query log
slow_query_log
#設置參數slow_query_log_file
slow_query_log_file=/var/log/mysql/mysql-slow.log
#設置參數log-query-not-using-indexes
log-query-not-using-indexes
#設置參數long_query_time
long_query_time=2
參數解釋:
- slow_query_log控制slow query log的開關,值爲on表示開,off表示關
- slow_query_log_file表示slow query log文件所在位置及其文件名
- log-query-not-using-indexes表示記錄未使用索引的查詢語句到slow query log中
- long_query_time表示查詢時間超過這個閥值的SQL語句記錄到slow query log (等於這個閥值的時候不會記錄)
- log_output指定slow query log的輸出格式,FILE(到文件)、TABLE(到表)、NONE(都不到) NONE優先級最高,FILE和TABLE優先級一樣
3 .查詢日誌(general log)
用來記錄所有對MySQL數據庫的請求信息,無論是否得到正確的執行。
啓動時參數配置文件中配置:
#開啓查詢日誌
general_log
#設置查詢日誌文件的目錄和名稱,默認時爲主機名+.log
general_log_file=/var/log/mysql/lzg-Lenovo-G40-70m.log
4 .二進制日誌(binary log)
記錄對MySQL數據庫執行更改的所有操作。
啓動時參數配置文件中配置:
#開啓二進制日誌並指定bin log 的所在目錄及其名稱
log_bin = /var/log/mysql/lzg-Lenovo-G40-70m-bin
#server_id是mysql 5.7之後開啓bin log必須要指定的,大概是因爲bin log是服務器級別的日誌
server_id =1
#設置參數binlog_format
binlog_format=statement
#設置參數max_binlog_size
max_binlog_size= 100M
#設置參數sync_binlog
sync_binlog=1
參數解釋:
- binlog_format表示二進制日誌的格式,有三種
1. statement 表示bin log記錄的是邏輯SQL語句
2. row 表示bin log記錄的是表中行的更改情況
3. mixed 是statement和row的混合,一般情況下使用statement,當可能存在主從不一致的情況下使用row - max_binlog_size 指定單個bin log文件的最大值
- sync_binlog表示每寫緩衝多少次就同步到磁盤,設置爲1時表示採用同步寫磁盤的方式來寫bin log
- binlog-do-db 需要寫入這些指定庫的日誌
- binlog-ignore-db 不需要寫入這些指定庫的日誌
- expire_logs_days 設置日誌的過期天數,過來這個值的天數的bin log就會被自動刪除
由於binlog是二進制的,而前面的查詢日誌、慢查詢日誌、錯誤日誌都是文本的,所以,前面的日誌可以直接查看,binlog日誌必須要使用mysqlbinlog工具來查看
一些日誌相關的mysql命令:
flush logs #是來刷新數據庫日誌的。
show binary logs #顯示binlog文件
show master logs #同上
show binlog events in 主機名-bin.******* #查看binlog中的內容
reset master #刪除binlog日誌文件,並新建一個000001的binlog
purge master logs to 主機名-bin.****** #刪除******編號之前的所有日誌
purge master logs before 'yyyy-mm-dd hh24:mi:ss'#刪除日記爲"yyyy-mm-dd hh24:mi:ss"之前所產生的日誌