binlog作⽤
binlog的主要作⽤是记录数据库中表的更改,它只记录改变数据的sql,不改变数据的sql不会写⼊,⽐如select语句⼀般不会被记录,因为他们不会对数据产⽣任何改动。⽤⼀个实际的场景看下binlog产⽣的过程,准备sql:
create table test(text varchar(20)); insert into test values ('test_text'); select * from test; flush logs;
查看binlog
show binlog events in 'binlog.000029';
显示的结果如下:
另外,也可以使⽤mysqlbinlog⼯具来查看binlog的内容:
show variables like 'log_%'; #查看⽇志⽬录 mysqlbinlog --short-form --force-if-open --base64-output=never /usr/local/var/mysql/binlog.000029
从⽇志我们可以看到执⾏了创建表的语句以及⼀个Format_desc头和Ratate轮换事件,这个我们会在后⾯讲到,先看⼏个字段代表的含义。
Log_name代表⽇志⽂件的名称,⽐如我这⾥的查询是直接查询binlog.000029,默认的写法是showbinlog events,但是这样只会查询到第⼀个binlog,并不是当前激活状态的binlog,如果你不知道binlog有哪些,可以⽤命令:
show binary logs; #查看binlog列表
show master status; #查看最新的binlog
Pos代表⽂件开始的位置。
Event_type代表事件的类型。
Server_id是创建事件的服务器ID。
End_log_pos代表事件在⽂件中的结束位置,以上⾯为例,第⼀次查询的结束位置是723,第⼆次insert
之后⽂件的开始位置就是从723开始。
Info代表事件信息,是⼀段可读的⽂本内容。