MySQL中binlog和relay-log结构的作用是什么

介绍

这篇文章给大家介绍MySQL中binlog和relay-log结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> binlog作用

binlog的主要作用是记录数据库中表的更改,它只记录改变数据的sql,不改变数据的sql不会写入,比如选择语句一般不会被记录,因为他们不会对数据产生任何改动。

用一个实际的场景看下binlog产生的过程,准备sql:

 create  table 测试(text  varchar (20));,, insert  into  test  values  (& # 39; test_text& # 39;);, select  *,得到测试;,,flush 原木;

查看binlog

 show  binlog  events 拷贝& # 39;binlog.000029& # 39;; 

显示的结果如下:

 MySQL中binlog和relay-log结构的作用是什么

binlog

另外,也可以使用mysqlbinlog工具来查看binlog的内容:

 show  variables  like  & # 39; log_ % & # 39;,, #查看日志目录,,mysqlbinlog ——short-form ——force-if-open ——base64-output=never /usr/地方/var/MySQL/binlog。000029年

 MySQL中binlog和relay-log结构的作用是什么

 MySQL中binlog和relay-log结构的作用是什么

从日志我们可以看到执行了创建表的语句以及一个Format_desc头和Ratate轮换事件,这个我们会在后面讲到,先看几个字段代表的含义。

Log_name代表日志文件的名称,比如我这里的查询是直接查询binlog。000029,默认的写法是show binlog events,但是这样只会查询到第一个binlog,并不是当前激活状态的binlog,如果你不知道binlog有哪些,可以用命令:

show binary logs; #查看binlog列表  show master status; #查看最新的binlog

MySQL中binlog和relay-log结构的作用是什么

Pos代表文件开始的位置。

Event_type代表事件的类型。

Server_id是创建事件的服务器ID。

End_log_pos代表事件在文件中的结束位置,以上面为例,第一次查询的结束位置是723,第二次insert之后文件的开始位置就是从723开始。

Info代表事件信息,是一段可读的文本内容。

binlog日志结构

binlog日志的结构大概是长这样的,它由索引文件和binlog文件组成,其中binlog事件又包含通用头、提交头和事件体3个部分组成。

MySQL中binlog和relay-log结构的作用是什么

首先说说索引文件,索引文件的每一行都包含了一个binlog文件的完整文件名(类似host-bin.001),一些命令比如flush logs将所有日志写入磁盘会影响到索引文件。

每个binlog文件以若干个binlog事件组成,以格式描述事件(Format_description)作为文件头(上面的binlog图片Format_desc事件),以日志轮换事件(rotate)作为文件尾。

Format_description包含binlog文件的服务器信息、文件状态的关键信息等。如果服务器关闭或者重启,则会创建一个新的binlog文件,同时写入一个新的format_description。他的格式大致如下。

2                binlog-version  string[50]       mysql-server version  4                create timestamp  1                event header length  string[p]        event type header lengths

日志轮换事件则包含下一个binlog的文件名以及开始读取的位置,它由服务器写完binlog后添加到文件尾,轮换事件并不会每次都存在,格式如下。

if binlog-version > 1 {  8              position  }  string[p]      name of the next binlog

binlog事件包含若干个事务组成的组(group),每个组对应一个事务,如果是create alter语句不属于事务语句的话,则他们本身就是一个组,每个组要么全部执行,要么都不执行。

MySQL中binlog和relay-log结构的作用是什么