日誌類型:
錯誤日誌(error log)
常規日誌(general log)
二進制日誌(bin log)
中繼日誌(relay log)
慢日誌(slow log)
InnoDB引擎的redo log
錯誤日誌
log-error = error.log
不加存儲路徑存儲到datadir下,如果不指定名字是hostname.err
記錄mysql啓動關閉,運行中的異常或是重要提示信息
在生產環境中,監控這個日誌
全量日誌(常規日誌)
general_log = OFF|ON
general_log_file = general.log
不指定路徑存儲到datadir下,如果不指定名字是hostname.log
開啓後,記錄client和數據庫的所有請求
二進行日誌 最大文件數爲2的32次方個
log-bin = /data/mysql/mysql3306/logs/mysql-bin
設置二進制日誌的存儲位置及prefix名字
用記錄數據庫寫入操作的日誌,可以用於備份或是master/slave的複製,必須有server-id
如果沒有可以通過修改內存裏的值加上,但是有風險
不能太快產生,儘量大些,5分鐘左右產生一個日誌
log_bin = /data/mysql/mysql3306/log/mysql-bin 是否開啓binlog
log_bin_index = /data/mysql/mysql3306/log/mysql-bin.index
指定binlog的一個索引文件,默認是在datadir形成log_bin的prefix名index
binlog_do_db = thunder
用於指定只記錄那個庫的二進制日誌(建議不要用)
max_binlog_size = 500M
指定binlog的大小爲500M一個文件,默認是1G
expire-logs-days = 5
指定保留binlog的天數
binlog_format = row
指定binlog的日誌格式,支持statement,row,mixed格式
statement格式記錄原生的sql
row格式裏沒有,但5.6後增加了一個query event可以看到原來的sql
binlog_rows_query_log_events 默認是off
mixed格式是兩種形式的混合體,DDL語句記錄statement格式,DML語句記錄row格式
推薦使用row格式
binlog_row_image = full
控制日誌中binlog的詳細相關的程度,支持full(default),minimal,nobolb
minimal:只記錄變化的行和唯一標識列
nobolb:除了blob,text其它列都記
binlog_error_action = abort_server
當遇到mysql不能寫binlog時,報出異常,默認是ignore error不報錯
binlog_direct_non_transactional_updates = on
對於非事務引擎表,直接走日誌,不走2pc提交,默認是不支持
binlog_order_commit = on
按順序寫入日誌
binlog_cache_size=1M 已經很大
此參數表示binlog使用的內存大小,可以通過狀態變量binlog_cache_use和bin_cache_disk_use 來幫助測試
binlog_cache_use:使用二進制日誌緩存的事務數量
binlog_cache_disk_use:使用二進制日誌緩存但超過binlog_cache_size值並使用臨時文件來保存事務中的語句的事務數量
binlog_checksum (5.6.2引入)在高版本上修改
mysql5.6.6後默認是crc32,之前版本是none
在啓用這個參數之前對於日誌的完整校驗就是通過對比長度,引入新的方式後,利用新方法對內容進行校驗
binlog_rows_query_log_events (5.6.2引入)
只作用於RBR格式,默認不啓用
如果啓用,會把用戶寫直的原生態DML操作記錄到binlog中
log_bin_use_v1_row_events (5.6.6引入)
默認是0,如果使用1是使用Version1的格式,mysql5.5可以認出來的形式,如果0是5.6.6後使用的version2格式
sync_binlog = 1|0
這個參數對性能影響嚴重,數據一致性條件要求高調整爲1,性能差別大概爲10倍
當事務提交後,mysql僅僅是將binlog_cache中的數據寫入binlog文件,但不執行fsync之類的磁盤同步指令通知文件系統將緩存刷新到磁盤,面讓filesystem自行決定什麼時候來同步,這個是性能最好的。
sync_binlog=n 在進行n次事務提交以後,mysql將執行一次fsync之類的磁盤同步指令,同步文件系統將binlog文件緩存刷新到磁盤。
mysql中默認的設置是sync_binlog=0,即不作任何強制性的磁盤刷新指令,這是性能是最好的,但風險也是最大的。一旦系統crash,在文件系統緩存中的所有binlog信息都會丟失
中繼日誌
relay-log = relay-bin
設置中繼日誌的名稱前綴,不指定路徑默認在datadir下
log_thread從master就讀到的日誌寫到中繼日誌中,供sql_thread執行,以完成複製
慢日誌
slow-query-log-file = slow.log
slow-query-log
long_query_time=1
是怎麼計時的,
ddl語句 exec時間
dml語句 select從等待鎖開始計時,insert只記錄執行時間
利用slow-query-log這個參數打開慢日誌,slow-query-log-file指定慢日誌的名稱,不指定路徑默認在datadir下
建議每天一個文件,時間長可能會很大,做定時任務
Innodb的redo log 《事務處理概念》事務處理聖經
innodb_log_group_home_dir=/data/mysql/mysql3317/logs 默認在datadir下
SSD磁盤中,日誌文件不要放在SSD磁盤中,普通硬盤即可
innodb_log_file_size = 200M 512M左右即可
innodb_log_files_in_group = 3 個數
指定redo log的存儲位置及大小,文件個數
Innodb事務操作不可缺少的一個環節