iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中binlog和relay-log结构的作用是什么
  • 469
分享到

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

2024-04-02 19:04:59 469人浏览 八月长安
摘要

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

这篇文章给大家介绍Mysql中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';

显示的结果如下:

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

binlog

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

show variables like 'log_%'; #查看日志目录  mysqlbinlog --short-fORM --force-if-open --base64-output=never /usr/local/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结构的作用是什么

binlog事件结构

每个binlog事件由3个部分组成:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  通用头,包含binlog中所有事件具备的基本信息。

  3.  提交头,对于不同类型的事件来说,提交头的内容也不尽相同

  4.  事件体,存储事件的主要数据,同样对于不同类型事件也不同。

binlog轮换和清理

从上面的例子我们也可以看出来,binlog并非只有一个,而基于真实的场景来说,始终写一个binlog文件肯定也是不可取的,而binlog轮换主要有3个场景:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  服务器启动,每次服务器启动都会生成一个新的binlog文件。

  3.  达到最大大小,可以通过binlog-cache-size控制大小,达到最大大小后将更换。

  4.  显示刷新,flush logs将所有日志写入磁盘,这时候会创建一个新的文件写入,从第一个例子也能看出来执行完之后生成了一个新的日志binlog.000030的文件并且开始的位置是4。

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

随着时间的推移,我们的binlog文件会越来越多,这时候有两种方式可以清除binlog:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  通过设置expire-logs-days控制想保留的binlog日志文件天数,系统将会自动清理。

  3.  通过PURGE BINARY LOGS手动清理

relay-log结构

relay-log中继日志是连接master和slave的核心,我们来深入了解一下它的结构和使用。

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

image-20200909161115718

relay-log的结构和binlog非常相似,只不过他多了一个master.info和relay-log.info的文件。

master.info记录了上一次读取到master同步过来的binlog的位置,以及连接master和启动复制必须的所有信息。

relay-log.info记录了文件复制的进度,下一个事件从什么位置开始,由sql线程负责更新。

上一篇文章我们提到了整个复制流程的过程大概是这个样子:

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

知道binlog和relay-log的结构之后,我们重新梳理一下整个链路的流程,这里我们假定master.info和relay-log.info都是存在的情况:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  Master收到客户端请求语句,在语句结束之前向二进制日志写入一条记录,可能包含多个事件。

  3.  此时,一个Slave连接到Master,Master的dump线程从binlog读取日志并发送到Slave的IO线程。

  4.  IO线程从master.info读取到上一次写入的最后的位置。

  5.  IO线程写入日志到relay-log中继日志,如果超过指定的relay-log大小,写入轮换事件,创建一个新的relay-log。

  6.  更新master.info的最后位置

  7.  SQL线程从relay-log.info读取进上一次读取的位置

  8.  SQL线程读取日志事件

  9.  在数据库中执行sql

  10.  更新relay-log.info的最后位置

  11.  Slave记录自己的binlog日志

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

但是在这里IO和SQL线程有会产生重复事件的问题,举一个场景:

  1.  先记录中继日志,然后更新master.info位置

  2.  此时服务器崩溃,写入master.info失败

  3.  服务器恢复,再次同步从master.info获取到的是上一次的位置,会导致事件重复执行

关于MySQL中binlog和relay-log结构的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中binlog和relay-log结构的作用是什么

本文链接: https://www.lsjlt.com/news/56947.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中binlog和relay-log结构的作用是什么
    这篇文章给大家介绍MySQL中binlog和relay-log结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。binlog作用binlog的主要作用是记录数据库中表的更改...
    99+
    2022-10-18
  • mysql中relay log和binlog有什么用
    这篇文章主要为大家展示了“mysql中relay log和binlog有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中relay log和bi...
    99+
    2022-10-18
  • mysql中Binlog事件的结构是什么
    今天就跟大家聊聊有关mysql中Binlog事件的结构是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、说明一个事件对象分为事件头和事件体。如果事件头的长度是x字节,那么事件体...
    99+
    2023-06-15
  • MySQL日志之redo log和binlog的区别是什么
    这篇文章主要介绍了MySQL日志之redo log和binlog的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。redo log和...
    99+
    2022-10-18
  • mysql中Binlog日志的作用是什么
    mysql中Binlog日志的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明MySQL的二进制日志binlog可以说是MySQL最重要的日志,...
    99+
    2023-06-15
  • MySQL中的redo log和undo log日志有什么用
    这篇文章主要介绍“MySQL中的redo log和undo log日志有什么用”,在日常操作中,相信很多人在MySQL中的redo log和undo log日志有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-20
  • Python中的分支结构和循环结构是什么
    这篇文章主要介绍“Python中的分支结构和循环结构是什么”,在日常操作中,相信很多人在Python中的分支结构和循环结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的分支结构和循环结构...
    99+
    2023-06-02
  • Go语言中结构体的作用是什么
    这篇文章给大家介绍Go语言中结构体的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。自定义类型type 自定义类型名 类型名 例: type NewInt&nb...
    99+
    2023-06-15
  • C#语言中结构体的作用是什么
    今天就跟大家聊聊有关C#语言中结构体的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#语言的结构体是一个比较复杂的东西,在此之上有很多需要设置的参数,否则用起来就很容易出...
    99+
    2023-06-17
  • MySQL中的数据存储结构是什么
    这篇文章主要介绍“MySQL中的数据存储结构是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中的数据存储结构是什么”文章能帮助大家解决问题。 ...
    99+
    2023-02-14
    mysql
  • MySQL中的常用树形结构设计是什么
    今天小编给大家分享一下MySQL中的常用树形结构设计是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 递归表idpi...
    99+
    2023-07-05
  • SQL Server中表和索引存储结构的作用是什么
    这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 堆所谓堆(heap),就是不含聚集索引的表。堆的 sys.par...
    99+
    2022-10-18
  • Go空结构体struct{}的作用是什么
    目录前言作用使用场景实现集合类型实现空通道实现方法接收者总结前言 通过这篇文章《浅谈Go结构体的基本使用》,我们初步认识了空结构体,使用unsafe.SizeOf()方法,明确知道了...
    99+
    2023-02-16
    Go空结构体struct{} Go空结构体 Go struct{}
  • Redis中内部数据结构intset的作用是什么
    本篇文章为大家展示了Redis中内部数据结构intset的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。intset数据结构简介intset顾名思义,是由...
    99+
    2022-10-18
  • Redis中内部数据结构quicklist的作用是什么
    Redis中内部数据结构quicklist的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。quicklist概述Redis对外暴露的...
    99+
    2022-10-18
  • Redis中内部数据结构ziplist的作用是什么
    本篇文章为大家展示了Redis中内部数据结构ziplist的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是ziplistRedis官方对于zipli...
    99+
    2022-10-18
  • Redis中内部数据结构dict的作用是什么
    本篇文章为大家展示了Redis中内部数据结构dict的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。dict的数据结构定义为了实现增量式重哈希(incre...
    99+
    2022-10-18
  • Redis中内部数据结构sds的作用是什么
    Redis中内部数据结构sds的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。sds的数据结构定义我们知道,在C语言...
    99+
    2022-10-18
  • 使用 SOUNDEX() 在 MySQL 中搜索的正确结构是什么?
    基本上,SOUNDEX() 函数用于返回 Soundex,这是一种语音算法,用于在声音的英语发音之后索引名称,字符串的字符串。使用 SOUNDEX() 在 MySQL 中搜索的正确结构如下 -SOUNDEX(Str)这里,Str 是要检索其...
    99+
    2023-10-22
  • Map和Set两种数据结构在ES6的作用是什么
    这篇文章主要介绍“Map和Set两种数据结构在ES6的作用是什么”,在日常操作中,相信很多人在Map和Set两种数据结构在ES6的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作