Binlog是mysql的二进制日志, 它的主要目的是基于数据重放机制最大可能的恢复数据库的更新,因为二进制日志包含数据库备份后进行的所有更新。
Mysql的主从复制特性也依赖于此实现。
Binlog的启动只增加 1% 的mysql负载, 所以不会成为瓶颈。
Mysql在数据操作成功后将按照逐LOG_EVENT递增的形式追加一条binlog。
Binlog配置启用, vim my.cnf
log_bin = /var/log/mysql-bin.log
## 可选配置
binlog_format = MIXED #默认statement, 推荐mixed
expire_logs_days = 7
max_binlog_size = 100m
Binlog三种格式:
1 基于语句 statement
记录数据变化的sql语句。一般日志量较小,但是语句执行的可靠性较低。
2 基于行 row
记录被修改的数据行。数据细节清晰可靠,但一般日志量较大。
3 混合模式mixed
以上两种格式的合并。
Binlog查看:
binlog文件由 索引文件 及 具体日志 文件构成:
mysql-bin.index #索引文件, 内容为所有日志文件名, 一行一个
mysql-bin.000001 #具体日志文件, 每次mysql服务重启都会新增一个日志文件, 序列号增一。
#内容包含了当下mysql服务中, 所有库的数据变更。
需要注意的是, 由于binlog是二进制