实验环境
此次实验的环境如下
- MySQL 5.7.25
- Redhat 6.10
- binlog模式采用row模式
前面的一些章节我们对mysqldump常用命令进行了讲解
这个专题的内容为mysqlbinlog命令的详解
mysqlbinlog是MySQL中用来处理binlog的工具
这节内容讲如何根据条件来查看特定的位置
1. 根据事件起始位置
1.1 如何查看位置
日志中查看
每个事件从#at position1开始至下一个# at position2结束
postion为具体的数字
![32e329aa20fe4bf5bc507ea0782e98df.png](https://i-blog.csdnimg.cn/blog_migrate/48dedd16730b8392cf7065fe5a14e976.jpeg)
如上图所示
INSERT事件的开始位置为1015,结束位置为1064 ,其实end_log_pos也是结束位置
查看当前日志位置
SQL>show master status;
![3b1ffe6001ff2c879f15a92547b730c3.png](https://i-blog.csdnimg.cn/blog_migrate/c29c720f3f28c9dac81c05a04189eb90.jpeg)
上图代表当前日志记录到000001号日志文件的715号位置,即下个事件的起始位置为715
1.2 应用举例
下面根据上图查看INSERT事件
如不指定stop-position 则会一直到最后
shell> mysqlbinlog -v --start-position=780 --stop-position=1064 /path/to/log/master-bin.000001
![8699d3cd6da34d8cbc2777e64d77f60b.png](https://i-blog.csdnimg.cn/blog_migrate/a7a0a023c0d0829d0c7d6c77199486c4.jpeg)
注意,这里会强制在开始显示格式描述事件,之后才跳到780
这里我们从780位置开始,即整个插入的开始阶段
如果直接从1015开始会报错,找不到表,即没有映射表的事件
![aa4881ad7897967d458cbe6015f5f671.png](https://i-blog.csdnimg.cn/blog_migrate/30d83ad8c80e514bc93c1b13f62ad5cd.jpeg)
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
![923444074eeab99caf73373f77f1f615.png](https://i-blog.csdnimg.cn/blog_migrate/9aaa82890dee595cdbf68f7c477667a2.jpeg)
3. 参考链接
https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html
好了 今天的内容就说到这里,下节再见
![c1bfb1de8945817890954c7ebb592fa8.png](https://i-blog.csdnimg.cn/blog_migrate/5a0df12f1a129c3c6f80a1d4d927cd76.jpeg)