您的位置:首页 > 数据库 > MySQL

MySQL二进制日志优化

2015-12-24 17:41 489 查看
具体参数如下:

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
二进制日志缓存最长时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  binlog mysql