什么是二进制日志?
记录对数据库所发生的更改的日志。
- 记录对数据发生或潜在发生更改的SQL语句。
- 二进制格式保存
- 用途广泛,包括:
查看数据库变更历史
数据库增量备份
数据库灾难恢复
MySQL复制
不重启修改二进制日志配置
- SET @@global.log_bin=1
- SET @@global.binlog_size=37268 (单位bytes)
- 其他参数可以通过以下命令查询:
SHOW VARIABLES LIKE '%bin%';
常用二进制日志相关参数 - 修改以下配置后,需要重新启动数据库服务使之生效。
- log-bin=
- 开启并制定二进制日志保存路径及文件名。不设置则使用默认值。默认存放位置为数据库文件所在目录,名称为hostname-bin.xxx
- max-binlog-size=500m
- 设置单个二进制日志文件的最大值,默认1G,最大1G。
- binlog-do-db与binlog-ignore-db
- 指定二进制日志文件记录那些数据库操作。如果有多个数据库,以逗号分割配置。
- binlog-cache-size=100m
- 设置二进制日志缓存大小。 当数据库的qps(每秒请求数)达到上万次时,存储的io每秒就会达到上千次甚至上万次,一般的存储承受不了如此快的io,此时就需要开启缓存。
- sync-binlog=N
- 每隔N秒将缓存中的二进制记录写回硬盘。默认为0。不过,你经常会陷入group commit函数与I/O之间二选一的矛盾。如果在replication环境中,由于考虑到耐久性和一致性,则需要设置为1。同时,还需要设置innodb_flush_log_at_trx_commit=1以及innodb-support-xa=1(默认已开启)。
记录二进制日志的过程