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 

 二进制日志缓存最长时间


 


你可能感兴趣的:(mysql,binlog)