实验环境

此次实验的环境如下

  • MySQL 5.7.25

  • Redhat 6.10

  • binlog模式采用row模式

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

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

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

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

1. 根据事件起始位置

1.1 如何查看位置

日志中查看

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

postion为具体的数字

1_2.png

如上图所示

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

查看当前日志位置

SQL>show master status;
2.png

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

1.2 应用举例

下面根据上图查看INSERT事件

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

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

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

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

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

4.png

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
5.png

3. 参考链接

https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html

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