binlog二進制日志對于mysql數據庫的重要性有多大,在此就不多說了。下面根據本人的日常操作經歷,并結合網上參考資料,對binlog日志使用做一梳理:
一、binlog日志介紹
1)什么是binlog
binlog日志用于記錄所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改。
2)binlog作用
因為有了數據更新的binlog,所以可以用于實時備份,與master/slave主從復制結合。
3)和binlog有關參數
log_bin
設置此參數表示啟用binlog功能,并指定路徑名稱
log_bin_index
設置此參數是指定二進制索引文件的路徑與名稱
binlog_do_db
此參數表示只記錄指定數據庫的二進制日志
binlog_ignore_db
此參數表示不記錄指定的數據庫的二進制日志
max_binlog_cache_size
此參數表示binlog使用的內存最大的尺寸
binlog_cache_size
此參數表示binlog使用的內存大小,可以通過狀態變量binlog_cache_use和binlog_cache_disk_use來幫助測試。
binlog_cache_use:使用二進制日志緩存的事務數量
binlog_cache_disk_use:使用二進制日志緩存但超過binlog_cache_size值并使用臨時文件來保存事務中的語句的事務數量
max_binlog_size
Binlog最大值,最大和默認值是1GB,該設置并不能嚴格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個比較大事務時,為了保證事務的完整性,不可能做切換日志的動作,只能將該事務的所有SQL都記錄進當前日志,直到事務結束
sync_binlog
這個參數直接影響mysql的性能和完整性
sync_binlog=0
當事務提交后,Mysql僅僅是將binlog_cache中的數據寫入Binlog文件,但不執行fsync之類的磁盤 同步指令通知文件系統將緩存刷新到磁盤,而讓Filesystem自行決定什么時候來做同步,這個是性能最好的。
sync_binlog=n,在進行n次事務提交以后,Mysql將執行一次fsync之類的磁盤同步指令,同志文件系統將Binlog文件緩存刷新到磁盤。
Mysql中默認的設置是sync_binlog=0,即不作任何強制性的磁盤刷新指令,這時性能是最好的,但風險也是最大的。一旦系統繃Crash,在文件系統緩存中的所有Binlog信息都會丟失
4)binlog的刪除
binlog的刪除可以手工刪除或自動刪除:
a)自動刪除binlog
通過binlog參數(expire_logs_days )來實現mysql自動刪除binlog
mysql> show binary logs;
mysql> show variables like 'expire_logs_days';      //該參數表示binlog日志自動刪除/過期的天數,默認值為0,表示不自動刪除            
新聞熱點
疑難解答