美文网首页
relay-log结构

relay-log结构

作者: 嘘寒问暖 | 来源:发表于2022-08-23 23:37 被阅读0次

relay-log中继⽇志是连接master和slave的核⼼,我们来深⼊了解⼀下它的结构和使⽤。

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

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

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

上⼀篇⽂章我们提到了整个复制流程的过程⼤概是这个样⼦:

知道binlog和relay-log的结构之后,我们重新梳理⼀下整个链路的流程,这⾥我们假定master.info和

relay-log.info都是存在的情况:

1. Master收到客户端请求语句,在语句结束之前向⼆进制⽇志写⼊⼀条记录,可能包含多个事件。

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

3. IO线程从master.info读取到上⼀次写⼊的最后的位置。

4. IO线程写⼊⽇志到relay-log中继⽇志,如果超过指定的relay-log⼤⼩,写⼊轮换事件,创建⼀个新

的relay-log。

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

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

7. SQL线程读取⽇志事件

8. 在数据库中执⾏sql

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

10. Slave记录⾃⼰的binlog⽇志

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

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

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

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

既然会有这个问题还为什么要这样做呢?假设反过来,先更新master.info再记录中继⽇志,这样带来的问题就是丢失数据了。⽽mysql认为丢失⽐重复更严重,所以要先刷新⽇志,保⼤还是保⼩mysql帮你做了决定。

相关文章

  • relay-log结构

    relay-log中继⽇志是连接master和slave的核⼼,我们来深⼊了解⼀下它的结构和使⽤。 relay-l...

  • [摘][MYSQL]MySQL主库binlog(master-l

    [[toc]] 1、主库binlog: 2、从库relay-log: 注意relay log的这一行: 70010...

  • MySQL中的binlog和relay-log结构完全详解

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要...

  • 深⼊binlog和relay-log

    binlog作⽤ binlog的主要作⽤是记录数据库中表的更改,它只记录改变数据的sql,不改变数据的sql不会写...

  • MySQL replication 高级进阶

    延时从库 解决逻辑损坏问题 ,实际上是让SQL线程慢点回放relay-log,一般企业建议延迟3-6小时,具体看运...

  • 结构 结构

    当我走过这里的每一寸土地 我的心似乎从来都不能平静 除了月光落地和花开的声音 我似乎听到了她狂热般的心跳 人们在这...

  • 数据结构理论

    数据结构分为逻辑结构和物理结构。 逻辑结构 1,集合结构。2,线性结构。3,属性结构。4,图形结构。 物理结构 1...

  • 结构:结构中的结构

    结构数组 结构中的结构 嵌套的结构

  • 003-控制流程语句if,elseif,switch,for,w

    控制流程语句 分支结构 循环结构 分支结构 简单的if结构 if...else结构 多重if结构 嵌套if结构 总...

  • 再深入一点|binlog和relay-log到底长啥样?

    上一篇mysql面试的文章之后收到不少朋友的意见,希望深入讲讲复制、日志的格式这些,今天,我们就来深挖一下mysq...

网友评论

      本文标题:relay-log结构

      本文链接:https://www.haomeiwen.com/subject/pzcagrtx.html