搜索
首页数据库mysql教程MySQL Binlog日志与主从复制是什么

1. Binlog日志的介绍

Binlog是Binary log的缩写,即二进制日志。Binlog的三个主要作用包括将随机IO转换为顺序IO以进行持久化、实现主从复制和支持数据恢复。本文重点主从复制相关的问题。

Binlog日志由一个索引文件与很多日志文件组成,每个日志文件由魔数以及事件组成,每个日志文件都会以一个Rotate类型的事件结束。

MySQL Binlog日志与主从复制是什么

对于每个事件,都可以分为事件头与事件体两部分:

事件头的结构如下所示:

MySQL Binlog日志与主从复制是什么

事件体的结构包括固定大小与可变大小两部分。

对于Binlog日志的格式,做简单的了解即可,感兴趣的同学可以深入学习。

2. 主从复制

2.1 主从复制的流程

MySQL Binlog日志与主从复制是什么

MySQL主从复制的流程大致如下:

  • 主库同步自己的Binlog日志给从库

  • 从库的IO线程将Binlog日志内容写入Relay Log

  • 从库的SQL线程取Relay Log并在数据库中进行回放

2.2 GTID

GTID是指全局事务标志,用来标记主从同步的情况。

当主节点提交一个事务时,会生成GTID并在Binlog日志中进行记录。从库的IO线程在读取Binlog日志时,会将其储存在自己的Relaylog中,并且将这个值设置到gtid_next中,即下一个要读取的GTID,从库读取这个gtid_next时,会对比自己的Binlog日志中是否有这个GTID:

  • 如果有这个记录,说明这个GTID的事务已经执行过了,可以忽略掉(幂等)。

  • 如果没有这个记录,slave就会执行该GTID事务,并记录到自己的Binlog日志中。

2.3 复制模型

  • 异步复制:master 把Binlog日志推送给slave,master不需要等到slave是否成功更新数据到Relay log,主库直接提交事务即可。这种模式牺牲了数据一致性。

  • 同步复制:每次用户操作时,必须要保证Master和Slave都执行成功才返回给用户。

  • 半同步复制:不要求Slave执行成功,而是成功接收Master日志就可以通知Master返回。

MySQL Binlog日志与主从复制是什么

2.4 MGR模式

分布式一致性算法Paxos。由至少3个或更多个节点共同组成一个数据库集群,事务的提交必须经过半数以上节点同意方可提交提供,支持多写模式。

MGR 是 share-nothing 的复制方案,基于分布式paxos协议实现,每个实例都有独立的完整数据副本,集群自动检查节点信息,做数据的同步。同时提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入。集群提供了容错功能,只要大多数节点正常运行,集群就能正常提供服务。

2.5 并行回放

事务回放是从库的SQL线程执行Relay Log的过程,并行回放是为了提高这一过程的效率,将可以并行进行的事务同时进行。

  • 基于逻辑时钟的并行回放

因为MySQL本身事务具有ACID的特点,所以从主库同步到从库的事务,只要其执行的逻辑时间上有重叠,那么这两个事务就能安全的进行并行回放。

  • 基于writeSet的并行回放

将一定时间内关于特定数据块区域的事务集合存储在一个HashMap中。在同一组内的事务或者具有重叠逻辑时钟的事务之间不会发生冲突,而其他情况则无法确定是否存在冲突。

以上是MySQL Binlog日志与主从复制是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),