Mysql 5.7 数据库复制中的 binlog优化
首先,要说明一些基本问题:
- MySQL的日志包括错误日志(ErrorLog),更新日志(UpdateLog),二进制日志(Binlog),查询日志(QueryLog),慢查询日志(SlowQueryLog)等;
- 日志的记录带来的直接性能损耗就是数据库系统中最为昂贵的IO资源;
- 在Mysql 5.7目前的版本中,binlog文件无法控制具体数量,比如只能产生多少个(但在Percona Server for Mysql 中,的确有一个设置选项: Variable
max_binlog_files
ported from Percona Server 5.6.); - 存储引擎也可能有具体的优化设置,如Innodb的“innodb_locks_unsafe_for_binlog”;
然后,着重记录三个选项:
1,限制binlog文件的大小
Property | Value |
---|---|
Command-Line Format | --max-binlog-size=# |
System Variable | max_binlog_size |
Scope | Global |
Dynamic | Yes |
Type | integer |
Default | 1073741824 |
Minimum | 4096 |
Maximum | 1073741824 |
2,设置日志保留时长
expire_logs_days = 7
3,在日志文件写入磁盘之前,控制日志的提交数量
Property | Value |
---|---|
Command-Line Format | --sync-binlog=# |
System Variable | sync_binlog |
Scope | Global |
Dynamic | Yes |
Type | integer |
Default (>= 5.7.7) | 1 |
Default (<= 5.7.6) | 0 |
Minimum | 0 |
Maximum | 4294967295 |
参考
1,16.1.6.4 Binary Logging Options and Variables 二进制日志记录选项和变量
https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html
2, mysql日志设置优化
https://www.cnblogs.com/ggjucheng/archive/2012/11/15/2771535.html