Binlog详解
- Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(CRUD等),但select或show等不会被binlog日志记录
- 主要作用: 主要用于数据库的主从复制以及增量恢复
Binlog开启方式
- 方式一:my.inf
log_bin=ON
log_bin_basename=/var/lib/mysql/mysql-bin
log_bin_index=/var/lib/mysql/mysql-bin.index
- 方式二:
log-bin=/var/lib/mysql/mysql-bin
server-id=123454 [针对5.7及以上]
service mysqld restart [mysql重启]
Binlog三种模式
- Row level
日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。 - Statement level(默认,公司首先)
每一条被修改数据的sql都会记录到master的bin-log中,slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql再次执行
good:节约磁盘IO,提高新能; 不用存储过程、触发器、函数
false:易出现主从复制不一致 - Mixed(混合模式)
Binlog常用操作
- 查看是否启用
show global variables like “binlog%”;
- 查看指定binlog文件的内容
show binlog events in ‘mysql-bin.0000**’;
- 查看当前正在写入的binlog文件
show master status\G;
- 获取binlog文件列表
show binary logs;
- mysqlbinlog工具查看
- Mysqlbinlog功能是将Binlog日志转换成Mysql语句,默认情况下binlog日志是二进制文件,无法直接查看
参数 | 描述 |
---|---|
-d | 指定库的binlog |
-r | 相当于重定向到指定文件 |
–start-position–stop-position | 按照指定位置精确解析binlog日志(精确),如不接–stop-positiion则一直到binlog日志结尾 |
–start-datetime–stop-datetime | 按照指定时间解析binlog日志(模糊,不准确),如不接–stop-datetime则一直到binlog日志结尾 |
案例:基于开始结束时间
> mysqlbinlog --start-datetime='2018-05-24 00:00:00' --stop-datetime='2018-05-24 23:59:59' -d database /var/lib/mysql/mysql-bin.000004