MySQL各種日誌總結

日誌類型:

錯誤日誌(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和數據庫的所有請求

 

二進行日誌  最大文件數爲232次方個

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事務操作不可缺少的一個環節

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章