mysql binlog过期策略_MySQL binlog日志优化方案
Binlog 相關參數及優化策略 我們首先看看Binlog 的相關參數,通過執行如下命令可以獲得關于Binlog 的相關參數。當然,其中也顯示出了“ innodb_locks_unsafe_for_binlog”這個Innodb 存儲引擎特有的與Binlog 相關的參數: mysql show variables like '%binlo
Binlog 相關參數及優化策略
我們首先看看Binlog 的相關參數,通過執行如下命令可以獲得關于Binlog 的相關參數。當然,其中也顯示出了“ innodb_locks_unsafe_for_binlog”這個Innodb 存儲引擎特有的與Binlog 相關的參數:
mysql> show variables like '%binlog%';
+--------------------------------+------------+
| Variable_name | Value |
+--------------------------------+------------+
| binlog_cache_size | 1048576 |
| innodb_locks_unsafe_for_binlog | OFF |
| max_binlog_cache_size | 4294967295 |
| max_binlog_size | 1073741824 |
| sync_binlog | 0 |
+--------------------------------+------------+
“binlog_cache_size":在事務過程中容納二進制日志SQL 語句的緩存大小。二進制日志緩存是服務器支持事務存儲引擎并且服務器啟用了二進制日志(—log-bin 選項)的前提下為每個客戶端分配的內存,注意,是每個Client 都可以分配設置大小的binlog cache 空間。如果讀者朋友的系統中經常會出現多語句事務的華,可以嘗試增加該值的大小,以獲得更好的性能。當然,我們可以通過MySQL 的以下兩個狀態變量來判斷當前的binlog_cache_size 的狀況:Binlog_cache_use
和Binlog_cache_disk_use。“max_binlog_cache_size”:和"binlog_cache_size"相對應,但是所代表的是binlog 能夠使用的最大cache 內存大小。當我們執行多語句事務的時候,max_binlog_cache_size 如果不夠大的話,系統可能會報出“ Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage”的錯誤。
“max_binlog_size”:Binlog 日志最大值,一般來說設置為512M 或者1G,但不能超過1G。該大小并不能非常嚴格控制Binlog 大小,尤其是當到達Binlog 比較靠近尾部而又遇到一個較大事務的時候,系統為了保證事務的完整性,不可能做切換日志的動作,只能將該事務的所有SQL 都記錄進入當前日志,直到該事務結束。這一點和Oracle 的Redo 日志有點不一樣,因為Oracle 的Redo 日志所記錄的是數據文件的物理位置的變化,而且里面同時記錄了Redo 和Undo 相關的信息,所以同一個事務是否在一個日志中對Oracle
來說并不關鍵。而MySQL 在Binlog 中所記錄的是數據庫邏輯變化信息,MySQL 稱之為Event,實際上就是帶來數據庫變化的DML 之類的Query 語句。“sync_binlog”:這個參數是對于MySQL 系統來說是至關重要的,他不僅影響到Binlog 對MySQL 所帶來的性能損耗,而且還影響到MySQL 中數據的完整性。對于“sync_binlog”參數的各種設置的說明如下:
● sync_binlog=0,當事務提交之后,MySQL 不做fsync 之類的磁盤同步指令刷新binlog_cache 中的信息到磁盤,而讓Filesystem 自行決定什么時候來做同步,或者cache 滿了之后才同步到磁盤。
● sync_binlog=n,當每進行n 次事務提交之后,MySQL 將進行一次fsync 之類的磁盤同步指令來將binlog_cache 中的數據強制寫入磁盤。在MySQL 中系統默認的設置是sync_binlog=0,也就是不做任何強制性的磁盤刷新指令,這時候的性能是最好的,但是風險也是最大的。因為一旦系統Crash,在binlog_cache 中的所有binlog 信息都會被丟失。而當設置為“1”的時候,是最安全但是性能損耗最大的設置。因為當設置為1 的時候,即使系統Crash,也最多丟失binlog_cache
中未完成的一個事務,對實際數據沒有任何實質性影響。從以往經驗和相關測試來看,對于高并發事務的系統來說,“sync_binlog”設置為0 和設置為1 的系統寫入性能差距可能高達5 倍甚至更多。
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql binlog过期策略_MySQL binlog日志优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js如何调用h5的日期控价_微信公众号支
- 下一篇: petapoco mysql_PetaP