天天看點

MySQL二進制日志優化

具體參數如下:

1.server-id=ID

服務的唯一ID

2.log_bin=/mydata/binlog/mysql-bin

二進制日志的位置和命名方式

3.binlog_format={ROW|STATEMENT|MIXD}

ROW格式:記錄資料更新的每一行資料的變更.當遇到alter,update整個字段的是值這樣的語句,會使得二進制日志的檔案龐大無比.影響了系統的IO性能.但是會保證資料的一緻性.

STATEMENT格式:記錄的隻是導緻資料變更的更新語句.但是有可能導緻資料不一緻.

MIXD:兩種格式的混合.

4.binlog_cache_size

全局變量

在事務過程中,用來儲存SQL語句的緩存大小.使用二進制日志的緩存前提是MYSQL伺服器采用了支援事務的存儲引擎,并且開啟了log_bin日志.該參數會為每個用戶端連接配接配置設定binlog_cache_size大小得緩存.

若使用者頻繁使用多語句的事務的情況下,可以增大binlog_cache_size的大小.

檢視binlog_cache_size是否合理

mysql> show status like 'binlog%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Binlog_cache_disk_use      | 1     |
| Binlog_cache_use           | 33    |
+----------------------------+-------+      

binlog_cache_use:使用二進制日志緩存的事務數量

binlog_cache_disk_use:使用二進制日志緩存但超過binlog_cache_size值并使用臨時檔案來儲存事務中的語句的事務數量

兩種情況:

(1)業務不存在大事務()

binlog_cache_size=1M

(2)業務不存在小事務(2M-4M)

binlog_cache_size=2M

5.sync_binlog={0|n}

0:表示事務送出後,不會立即将binlog_cache中的資料重新整理到磁盤上.重新整理時間是由檔案系統自身更新,或者binlog_cache飽和了,才會将cache中的資料刷到磁盤上.

n:表示事務送出n次後,才會将binlog_cache中的資料重新整理到磁盤上.該值設定為1最安全,因為最壞情況,值會丢一個事務.

6.max_binlog_size

二進制日志檔案的最大容量.一般為512M或者1G.

7.binlog_do_db  

設定哪些資料庫需要記錄到binlog.隻在master上配置.

8.binlog_ignore_db

哪些資料庫不需要記錄binlog.隻在master上配置.

9.replicate_do_db

設定哪些資料庫需要同步binlog,若有多個資料庫,請用逗号(,)隔開,隻在slave上配置.

10.replicate_ignore_db

設定哪些資料庫不需要同步binlog,若有多個資料庫,請用逗号(,)隔開.隻在slave上配置.

11.expire_logs_days 

 二進制日志緩存最長時間