目录
1.show binary logs 查看当前所有binlog文件列表编辑
3.show master status; 查看当前使用的binlog
一、作用
记录mysql运行过程中,变更类的语句(DDL,DML,DCL)
可以用来做数据恢复和主从复制
二、binlog配置
1.查看当前配置
2.修改配置文件

3.binlog配置参数解释
server_id | 主机ID,主从复制时用来区分不同的节点 |
log_bin | 二进制日志开关,也可以设置binlog存放位置和名称 |
log_bin_basename | 设置binlog存放位置和名称 |
binlog_format | 二进制日志记录格式,默认是row模式 |
sync_binlog | binlog刷新策略,默认为1 |
gtid_mode | |
enforce_gtid_consistency |
三、binlog记录内容说明
1.记录内容
记录mysql运行过程中,变更类的语句(DDL,DML,DCL)
2.DDL、DCL记录格式
statement 语句格式记录,例如:create database
3.DML记录格式
a)只会记录已经提交的事务语句
b)记录格式受到bin_log_format影响,可以设置
4.记录内容查看
在日志文件夹下使用mysqlbinlog命令
[root@localhost binlog]# mysqlbinlog binlog.000003
查看DMl语句,基于row模式查看内容
[root@localhost binlog]# mysqlbinlog --base64-output=decode-rows -vvv binlog.000003
四、bin_log_format 记录模式
1.行模式 Row
例如:update set name=‘a’ where id<10,行模式记录的是9个数据行每行变化的日志
日志量相对较大,记录准确
2.语句模式 Statement
语句模式记录的是update语句本身
日志量相对较小,记录可能不准确
3.混合模式
五、binlog文件查看
1.show binary logs 查看当前所有binlog文件列表

2.flush logs 刷新binlog
3.show master status; 查看当前使用的binlog
六、binlog记录单元-event事件
1.event介绍
DDL、DCL:一条语句就是一个事件
DML:一个事务型操作由多个event构成
begin e1
DML1 e2
DML2 e3
commit e4
2.事件的主要结构
开始标记:position
事件内容 event
结束标记:position
3.事件查看
查看当前使用的binlog文件:show master status
例如对数据库做了更改:create database yizuo charset utf8mb4;
查看该事件:show binlog events in 'binlog.000003';
前两行是默认
POS是事件起始位置点,End_log_pos是结束位置点
七、binlog日志截取和数据恢复
1.模拟drop环境

2.截取二进制日志-截取到drop那一行的position号(与gtid截取不同)
查找create database起点:
[root@localhost binlog]# mysql -e "show binlog events in 'binlog.000003';" | grep "create database yizuo";
查找drop操作的起点:
[root@localhost binlog]# mysql -e "show binlog events in 'binlog.000003';" | grep "drop database yizuo";
截取日志:
mysqlbinlog --start-position=233 --stop-position=2256 binlog.000003 >/tmp/bin.sql;
3.恢复数据
set sql_log_bin=0; 设置在恢复的时候不要产生额外的日志了,该设置是会话级别的
source /tmp/bin.sql; 恢复数据
set sql_log_bin=1; 设置二进制日志记录
八、binlog日志跨多文件截取
1.模拟环境
mysql> create database yizuo charset utf8mb4;
Query OK, 1 row affected (0.00 sec)
mysql> use yizuo;
Database changed
mysql> CREATE TABLE `city` (
-> `id` int NOT NULL AUTO_INCREMENT COMMENT '编号',
-> `name` varchar(100) DEFAULT NULL COMMENT '城市名',
-> `province` varchar(100) DEFAULT NULL,
-> `population` varchar(100) DEFAULT NULL COMMENT '人口',
-> `district` varchar(100) DEFAULT NULL COMMENT