## 实验环境


此次实验的环境如下

- MySQL 5.7.25

- Redhat 6.10

- binlog模式采用row模式

前面的一些章节我们对mysqldump常用命令进行了讲解


这个专题的内容为mysqlbinlog命令的详解

mysqlbinlog是MySQL中用来处理binlog的工具

这节内容讲如何根据条件来查看特定的位置


## 1. 根据事件起始位置



### 1.1 如何查看位置

**日志中查看**

每个事件从#at position1开始至下一个# at position2结束

postion为具体的数字


[image:571 size:orig]



如上图所示

INSERT事件的开始位置为1015,结束位置为1064 ,其实end_log_pos也是结束位置




**查看当前日志位置**

```
SQL>show master status;
```

[image:572 size:orig]


上图代表当前日志记录到000001号日志文件的715号位置,即下个事件的起始位置为715

### 1.2 应用举例

下面根据上图查看INSERT事件

如不指定stop-position 则会一直到最后

```
shell> mysqlbinlog  -v --start-position=780 --stop-position=1064  /path/to/log/master-bin.000001
```

[image:573 size:orig]


注意,这里会强制在开始显示格式描述事件,之后才跳到780

这里我们从780位置开始,即整个插入的开始阶段

如果直接从1015开始会报错,找不到表,即没有映射表的事件


[image:574 size:orig]


## 2. 根据事件执行时间

### 2.1 如何查看执行时间


在 # at position的下一行有时间显示

```
# at 1015
#190416 14:20:44 
```

### 2.2  应用举例


如下例子显示了2019-04-16 14:10:56 至2019-04-16 14:12:56 发生的时间

如不指定stop-datetime则表示一直到现在

注意=后不能有空格

```
mysqlbinlog -v  --start-datetime="2019-04-16 14:10:56"  --stop-datetime ="2019-04-16 14:12:56" /path/to/log/master-bin.000001
```

[image:575 size:orig]


## 3. 参考链接


[https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html](https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html)

好了 今天的内容就说到这里,下节再见