注意:在配置binlog相關變量的時候,相關變量名總是搞混,因為有的是binlog,有的是log_bin,當他們分開的時候,log在前,當它們一起的時候,bin在前。在配置文件中也同樣如此。
- log_bin = {on | off | base_name} #指定是否啟用記錄二進制日志或者指定一個日志路徑(路徑不能加.否則.后的被忽略)
- sql_log_bin ={ on | off } #指定是否啟用記錄二進制日志,只有在log_bin開啟的時候才有效
- expire_logs_days = #指定自動刪除二進制日志的時間,即日志過期時間
- binlog_do_db = #明確指定要記錄日志的數據庫
- binlog_ignore_db = #指定不記錄二進制日志的數據庫
- log_bin_index = #指定mysql-bin.index文件的路徑
- binlog_format = { mixed | row | statement } #指定二進制日志基于什么模式記錄
- binlog_rows_query_log_events = { 1|0 } # MySQL5.6.2添加了該變量,當binlog format為row時,默認不會記錄row對應的SQL語句,設置為1或其他true布爾值時會記錄,但需要使用mysqlbinlog -v查看,這些語句是被注釋的,恢復時不會被執行。
- max_binlog_size = #指定二進制日志文件最大值,超出指定值將自動滾動。但由于事務不會跨文件,所以并不一定總是精確。
- binlog_cache_size = 32768 #基于事務類型的日志會先記錄在緩沖區,當達到該緩沖大小時這些日志會寫入磁盤
- max_binlog_cache_size = #指定二進制日志緩存最大大小,硬限制。默認4G,夠大了,建議不要改
- binlog_cache_use:使用緩存寫二進制日志的次數(這是一個實時變化的統計值)
- binlog_cache_disk_use:使用臨時文件寫二進制日志的次數,當日志超過了binlog_cache_size的時候會使用臨時文件寫日志,如果該變量值不為0,則考慮增大binlog_cache_size的值
- binlog_stmt_cache_size = 32768 #一般等同于且決定binlog_cache_size大小,所以修改緩存大小時只需修改這個而不用修改binlog_cache_size
- binlog_stmt_cache_use:使用緩存寫二進制日志的次數
- binlog_stmt_cache_disk_use: 使用臨時文件寫二進制日志的次數,當日志超過了binlog_cache_size的時候會使用臨時文件寫日志,如果該變量值不為0,則考慮增大binlog_cache_size的值
- sync_binlog = { 0 | n } #這個參數直接影響mysql的性能和完整性
- sync_binlog=0:不同步,日志何時刷到磁盤由FileSystem決定,這個性能最好。
- sync_binlog=n:每寫n次事務(注意,對于非事務表來說,是n次事件,對于事務表來說,是n次事務,而一個事務里可能包含多個二進制事件),MySQL將執行一次磁盤同步指令fdatasync()將緩存日志刷新到磁盤日志文件中。Mysql中默認的設置是sync_binlog=0,即不同步,這時性能最好,但風險最大。一旦系統奔潰,緩存中的日志都會丟失。