程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql binlog日志優化及思路

mysql binlog日志優化及思路

編輯:MySQL綜合教程


mysql binlog日志優化及思路   在數據庫安裝完畢,對於binlog日志參數設置,有一些參數的調整,來滿足業務需求或使性能最大化。Mysql日志主要對io性能產生影響,本次主要關注binlog 日志。   查一下二進制日志相關的參數        mysql> show variables like '%binlog%'; +--------------------------------+----------------------+   | Variable_name                  | Value                |   +--------------------------------+----------------------+   | binlog_cache_size              | 1048576              |   | innodb_locks_unsafe_for_binlog | OFF                  |   | max_binlog_cache_size          | 18446744073709547520 |   | max_binlog_size                | 1073741824           |   | sync_binlog                    | 0                    |   +--------------------------------+----------------------+ 5 rows in set (0.14 sec)   www.2cto.com   其中innodb_locks_unsafe_for_binlog 參數是innodb存儲引擎特有的與binlog相關的參數,默認是關閉的   Binlog_cache_size:默認大小是37268即32K.我們計算一下上面binlog_cache_size參數大小,1048576/1024/1024 = 1M,根據事務需要調整大小。次參數表示在事務中容納二進制日志sql語句的緩存大小。那麼怎麼理解二進制日志緩存,就是服務器支持事務存儲引擎並且服務器啟用了二進制日志(-log-bin選項)的前提下為每個客戶端分配的內存,是每個client都可以分配設置大小的binlog cache空間。我們可以通過以下兩個狀態變量判斷binlog_cache_size的使用情況:   1  binlog_cache_use: Thenumber of transactions that used the temporary binary log cache.(使用二進制日志緩存的事務的數量)   www.2cto.com     2   Binlog_cache_disk_use: The number oftransactions that used the binary log cache but that exceeded the value of binlog_cache_size andused a temporary file to store changes from the transaction.    使用二進制日志緩存並且值達到了binlog_cache_size設置的值,用臨時文件存儲來自事務的變化這樣的事務數量   Max_binlog_cache_size: 默認值是18446744073709547520,這個值很大,夠我們使用的了。此參數和binlog_cache_size相對應,代表binlog所能使用的cache最大使用大小。如果系統中事務過多,而此參數值設置有小,則會報錯。 Max_binlog_size: 1073741824=1G  binlog的最大值,一般設置為512M或1G,一般不能超過1G。此參數不能非常嚴格控制binlog的大小,特別是在遇到大事務時,而binlog日志又到達了尾部,為了保證事務完整性,不切換日志,把所有sql都寫到當前日志。這根oracle redo日志有點不一樣(感興趣的可以google)。Mysql記錄的是mysql數據庫邏輯變化信息,稱之為event,實際上就是引起數據庫變化的query語句。   Sync_binlog: 參數不僅影響數據庫的性能,而且還影響數據庫數據的完整性。Sync_binlog參數選項有如下選擇   www.2cto.com   1 Sync_binlog=0,這意味著當事務提交之後,mysql不做fsync(文件系統同步)之類的磁盤同步指令刷新binlog_cache中的信息到磁盤,而讓filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁盤。 2 sync_binlog=n,當每進行n次提交之後,mysql將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。   Sync_binlog=0,這是數據庫默認設置,性能也是最好的,也是最危險的。一旦系統crash,在binlog_cache中的所有binlog信息都會被丟失。當synn_binlog=1的時候,是最安全性能消耗也最大,完成一個事務,同步一次。系統crash了,也只是丟掉了未完成的事務信息。沒坐過這方面的測試,設置為1和0在性能方面的差距,有做過的說在高並發系統中,兩種設置性能可高達5倍甚至更多。    這需要我們來做出選擇,是要性能最好,還是最安全。  資料:《mysql性能調優與架構設計》   www.2cto.com    http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html     作者 aeolus_pu

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved