MySQL相關的日志主要有以下幾種: 錯誤日志, 查詢日志, 慢查詢日志, binlog日志, 中繼日志, 事務日志
1、錯誤日志
記錄的事件信息:
(1)mysqld啟動和關閉過程中輸出的事件信息;
(2)mysqld運行中產生的錯誤信息;
(3)時間調度器event scheduler運行一個event時產生的日志信息;
(4)在主從復制架構中, 從服務器上啟動從服務器線程時產生的信息。
配置參數:
log_error=/data/mysql/mysql3306/logs/error.log
log_warnings=ON|OFF 是否記錄警告信息至錯誤日志文件中
2、查詢日志:
開啟general log,可以將所有的SQL語句記錄下來。一般不會開啟該功能,因為log的量會非常龐大。
但個別情況下可能會臨時開啟,用來排查故障。
配置參數:
有3個配置參數,general_log、log_output、general_log_file
(1)日志開關配置:
general_log=ON|OFF
(2)日志存儲方式:
log_output=FILE|TABLE
log_output='FILE'
表示將日志存入文件, 默認值是FILE
log_output='TABLE'
表示將日志存入數據庫, 日志信息就會被存入mysql.slow_log表中。
log_output='FILE,TABLE'
mysql支持同時兩種日志存儲方式, 以逗號隔開即可。
(3)日志文件保存位置:
general_log_file=/data/mysql/mysql3306/logs/general.log
建議:
日志記錄到表中要比記錄到文件中,耗費更多的系統資源。
因此對于需要啟用慢查日志,建議優先記錄到文件。
另外,除了用數據庫來收集此日志,也可以采用抓包的方案收集此日志(后續會有分享)。
3、慢查詢日志
MySQL的慢查詢日志,用來記錄在MySQL中響應時間超過閥值long_query_time的語句,則會被記錄到慢查詢日志中。
配置參數:
slow_query_log=ON|OFF
是否開啟慢查詢日志
slow_query_log_file=/data/mysql/mysql3306/logs/slow.log
慢查詢日志存儲路徑, 舊版(5.6以下版本)使用log_slow_queries來配置
long_query_time=0.1
慢查詢閾值, 單位為秒, 可以采用小數的形式精確到微妙。
log_queries_not_using_indexes=ON|OFF
未使用索引的查詢,也被記錄到慢查詢日志中。如果調優,建議開啟此選項。
log_output=FILE|TABLE
日志記錄方式, 同上。
4、binlog日志
記錄修改數據或可能引起數據改變的SQL語句。用于通過"重放"日志文件中的事件,來生成數據副本,恢復數據。
配置參數:
sql_log_bin=ON|OFF
是否記錄二進制日志
log_bin=/data/mysql/mysql3306/logs/mysql-bin
binlog文件存儲路徑
binlog_format=STATEMENT|ROW|MIXED
二進制日志記錄的格式
5、中繼日志
復制架構中, 從服務器用于保存從主服務器的二進制日志文件中讀取到的事件, 并保存為的日志文件
配置參數:
relay-log=/data/mysql/mysql3306/logs/relay-bin
6、事務日志
事務型存儲引擎自行管理和使用, 事務日志能將隨機IO轉換為順序IO。
事務型存儲引擎innodb用于保證事務特性的日志文件。
redo日志、undo日志
事務性存儲引擎ACID:
用于保證原子性、一致性、隔離性和持久性。