深⼊binlog和relay-log

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代表事件信息,是⼀段可读的⽂本内容。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容