对于参数 :binlog-row-event-max-size ,先看官方解释:默认值是8192
Property | Value |
---|---|
Command-Line Format | --binlog-row-event-max-size=# |
Type (64-bit platforms) | integer |
Type (32-bit platforms) | integer |
Default Value (64-bit platforms) | 8192 |
Default Value (32-bit platforms) | 8192 |
Minimum Value (64-bit platforms) | 256 |
Minimum Value (32-bit platforms) | 256 |
Maximum Value (64-bit platforms) | 18446744073709551615 |
Maximum Value (32-bit platforms) | 4294967295 |
Specify the maximum size of a row-based binary log event, in bytes. Rows are grouped into events smaller than this size if possible. The value should be a multiple of 256. The default is 8192. See Section 16.2.1, “Replication Formats”.
如果你正使用大的事务,二进制日志还会超过max_binlog_size:事务全写入一个二进制日志中,不会写入不同的二进制日志中,所以会出现binlog日志大小超过限定范围。
实验如下:binlog-row-event-max-size 没有设置,所以值默认为8192,我们调整 max_binlog_size 为 10M ,现在往库里面导入
200多M的sql 文件,我们发现当前日志文件(binlog.000004)超过了 10M的大小,当文件导完之后,进行了日志切换(binlog.000005):
mysql> show variables like 'binlog-row-event-max-size';
Empty set (0.01 sec)
mysql> show variables like 'max_binlog_size';
+-----------------+---------+
| Variable_name | Value |
+-----------------+---------+
| max_binlog_size | 1048576 |
+-----------------+---------+
[root@centos s1]# ll
total 230436
-rw-r-----. 1 mysql mysql 56 Mar 22 17:47 auto.cnf
-rw-r-----. 1 mysql mysql 1718 Mar 22 18:48 binlog.000001
-rw-r-----. 1 mysql mysql 363 Mar 22 19:41 binlog.000002
-rw-r-----. 1 mysql mysql 4990 Mar 22 21:03 binlog.000003
-rw-r-----. 1 mysql mysql 110062276 Mar 22 22:24 binlog.000004
-rw-r-----. 1 mysql mysql 190 Mar 22 22:24 binlog.000005