当前位置: 首页 > news >正文

MySQL的主从同步原理

MySQL的主从同步(也称为复制)是一种数据同步技术,用于将一个MySQL服务器(主服务器)上的数据和变更实时复制到另一个或多个MySQL服务器(从服务器)。这项技术支持数据备份、读写分离、故障恢复等多种应用场景。以下是MySQL主从同步的基本工作原理:

1. 二进制日志(Binary Log)

  • 主服务器上的所有数据修改(如INSERT、UPDATE、DELETE操作)都会记录在二进制日志中。这个日志是MySQL主从同步的基础,记录了所有对数据库进行更改的事件。
  • 二进制日志文件位置是同步过程中定位变更的关键信息。

2. 日志位置点(Log Position)

  • 每个事件在二进制日志中的位置都由一个日志位置点表示,这确保了从服务器可以精确地知道需要从哪里开始或继续复制数据。

3. 复制IO线程

  • 当从服务器启动并连接到主服务器时,它会启动一个IO线程。这个线程请求从上一次同步后的二进制日志位置点开始,复制主服务器上的二进制日志事件。

4. 重放SQL线程

  • 从服务器接收到二进制日志事件后,它会将这些事件写入自己的中继日志(Relay Log)
  • 然后,从服务器启动一个SQL线程来读取中继日志中的事件,并在自己的数据库上重放这些事件,从而实现数据的同步。

主从同步流程

  1. 记录:主服务器上的数据更改被记录到二进制日志。
  2. 请求和复制:从服务器的IO线程连接到主服务器,请求从某个二进制日志位置点开始的数据变更,并将接收到的数据写入到中继日志。
  3. 重放:从服务器的SQL线程读取中继日志中的事件,并在本地数据库上重放这些事件,完成数据的同步。

同步类型

  • 异步复制:主服务器在写入二进制日志后即完成了复制操作,不会等待从服务器确认。这是MySQL默认的复制方式。
  • 半同步复制:主服务器在写入二进制日志后会等待至少一个从服务器确认已收到并记录下日志事件后才认为复制操作完成。这提高了数据一致性,但可能会增加主服务器的响应时间。

注意事项

  • 主从同步过程中,主服务器的性能影响较小,但是网络延迟和从服务器处理事件的速度可能会导致从服务器与主服务器之间的延迟。
  • 管理者需要监控复制延迟,并确保所有从服务器都能及时地跟上主服务器的数据变更。

通过主从同步,MySQL能够支持高可用性、负载均衡和数据冗余,但需要仔细管理和监控以确保系统的稳定性和数据的一致性。

让我们用一个简单的例子来说明MySQL主从同步的原理,想象一下有一家连锁书店,主服务器是总店的账本,而从服务器是分店的账本。

  1. 步骤1:记录交易

    • 每当有顾客在总店买书时,总店的账本(主服务器的二进制日志)就会记录下这笔交易,比如“顾客买了一本《哈利·波特》”。
  2. 步骤2:通知分店

    • 分店(从服务器)每隔一段时间就会给总店打电话(从服务器的IO线程连接到主服务器),询问自上次通话以来,总店有没有新的交易。
    • 总店告诉分店最新的交易信息,并将这些信息通过电话(网络)传递给分店。
  3. 步骤3:分店记录交易

    • 分店接到电话后,会在自己的备用账本(中继日志)上记录下这些交易信息。
  4. 步骤4:更新分店账本

    • 分店的店员(从服务器的SQL线程)会查看备用账本上的新交易,并把这些信息更新到分店的主账本上。这样,分店的账本就和总店的账本保持一致了。

简单来说

  • 主服务器(总店账本)记录了所有的交易信息。
  • 从服务器(分店)定期从主服务器获取这些交易信息,并更新到自己的账本上,保证总店和分店账本的一致性。

类比理解

  • 二进制日志相当于总店账本中的交易记录。
  • 中继日志就像是分店先记录下总店电话中提供的交易信息的备用账本。
  • IO线程好比是分店给总店打电话请求新的交易信息。
  • SQL线程就是分店的店员,他们负责把备用账本上的交易更新到分店的主账本上。

通过这个例子,你可以看到MySQL主从同步其实就是一个信息传递和更新的过程,保证了数据在主服务器和一个或多个从服务器之间的一致性和同步。

相关文章:

MySQL的主从同步原理

MySQL的主从同步(也称为复制)是一种数据同步技术,用于将一个MySQL服务器(主服务器)上的数据和变更实时复制到另一个或多个MySQL服务器(从服务器)。这项技术支持数据备份、读写分离、故障恢复等多…...

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候,有时候不需要显示工具栏,工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示,在不需要的地方传false。也可以默认不显示 ,这个根据需求来。 2.在src/compo…...

C++之结构体

结构体 //一、结构体的概念、定义和使用 // 概念&#xff1a;结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型 #include<iostream> using namespace std; #include<string> //1.创建学生数据类型&#xff1a;学生包括&#xff08;姓名&am…...

分布式ID选型对比(1)

常见的几种ID生成方式对比: 种类 全局唯一 高性能 高可用 趋势递增 中心服务 缺点 UUID 是 高(本地生成,(无网络开销) 低(无序,不适用) 否 否 无序、字符串 数据库自增 单表唯一 中 中(宕机就会使业务服务中断) 是 否 安全性差,能猜出来规律 对于分库分表场景无法唯一 数据库自…...

T-SQL 高阶语法之存储过程

一&#xff1a;存储过程概念 预先存储好的sql程序&#xff0c;通过名称和参数进行执行&#xff0c;供应程序去调用&#xff0c;也可以有返回结果&#xff0c;存储过程可以包含sql语句 可以包含流程控制、逻辑语句等。 二&#xff1a;存储过程的优点 执行速度更快 允许模块化…...

解决鸿蒙模拟器卡顿的问题

缘起 最近在学习鸿蒙的时候&#xff0c;发现模拟器非常卡&#xff0c;不要说体验到鸿蒙的丝滑&#xff0c;甚至到严重影响使用的程度。 根据我开发Android的经验和在论坛翻了一圈&#xff0c;最终总结出了以下几个方案。 创建模拟器 1、在DevEco Virtual Device Configurat…...

【LeetCode每日一题】【BFS模版与例题】863.二叉树中所有距离为 K 的结点

BFS的基本概念 BFS 是广度优先搜索&#xff08;Breadth-First Search&#xff09;的缩写&#xff0c;是一种图遍历算法。它从给定的起始节点开始&#xff0c;逐层遍历图中的节点&#xff0c;直到遍历到目标节点或者遍历完所有可达节点。 BFS 算法的核心思想是先访问当前节点的…...

设计模式-结构模式-装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 //首先&#xff0c;定义一个组件接口&#xff1a; public in…...

MySQL:一行记录如何

1、表空间文件结构 表空间由段「segment」、区「extent」、页「page」、行「row」组成&#xff0c;InnoDB存储引擎的逻辑存储结构大致如下图&#xff1a; 行 数据库表中的记录都是按「行」进行存放的&#xff0c;每行记录根据不同的行格式&#xff0c;有不同的存储结构。 页…...

‘grafana.ini‘ is read only ‘defaults.ini‘ is read only

docker安装grafana 关闭匿名登录情况下的免密登录遇到问题 grafana.ini is read only defaults.ini is read only 参考回答&#xff08;Grafana.ini giving me the creeps - #2 by bartweemaels - Configuration - Grafana Labs Community Forums&#xff09; 正确启动脚本 …...

博途PLC 面向对象系列之“输送带控制功能块“(SCL代码)

这篇是面向对象系列之"输送带功能块"的封装,面向对象是系列文章,相关链接如下: 1、面向对象系列之找"对象" https://rxxw-control.blog.csdn.net/article/details/136150027https://rxxw-control.blog.csdn.net/article/details/1361500272、面向对象…...

2024-02学习笔记

1.当我们向Set集合中添加一个已经存在的元素时 当我们向Set集合中添加一个已经存在的元素时&#xff0c;Set集合会如何处理呢&#xff1f;实际上&#xff0c;Set集合不会将重复的元素添加到集合中。当我们向Set集合中添加一个元素时&#xff0c;Set集合会首先判断该元素是否已…...

最新消息:英特尔宣布成立全新独立运营的FPGA公司——Altera

今天&#xff0c;英特尔宣布成立全新独立运营的FPGA公司——Altera&#xff08;2015年6月Intel以 167 亿美元的价格&#xff0c;收购FPGA厂商Altera&#xff09;。首席执行官Sandra Rivera和首席运营官Shannon Poulin分享展示其在超过550亿美元的市场中保持领先性的战略规划&am…...

RC正弦波振荡电路

RC正弦波振荡电路 RC正弦波振荡电路又称文氏电桥振荡电路&#xff0c;可以设计频率为f1/2πRC的正弦波发生器。 RC正弦波振荡电路设计&#xff1a;50Hz,振幅为3.47V 电路分析&#xff1a; 1.起振条件取决于R1, R4&#xff0c;R2与1N4148并联电阻&#xff08;下面简称Rf&#…...

【Git学习笔记】提交PR

step1 克隆一个仓库 git clone .....step2 创建一个分支 (Creating a branch) # 创建并切换到本地新分支&#xff0c;分支的命名尽量简洁&#xff0c;并与解决的问题相关 git checkout -b delete-unused-linkstep3 做出修改 (Make changes) step4 提交修改 # 保存本地修…...

线程池的相关参数

在Java中线程池是一种池化技术&#xff0c;用于管理和复用线程&#xff0c;提高线程的利用率和性能。下面是一些常见的线程池的参数及其解释&#xff1a; 一&#xff1a;线程池的七大参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTim…...

图书推荐||Word文稿之美

让你的文档从平凡到出众&#xff01; 本书内容 《Word文稿之美》是一本全面介绍Word排版技巧和应用的实用指南。从初步认识数字排版到高效利用模板、图文配置和表格与图表的排版技巧&#xff0c;再到快速修正错误和保护文件&#xff0c;全面系统地讲解数字排版的技术和能力&…...

前端导出word文件的多种方式、前端导出excel文件

文章目录 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09;使用模板导出 前端通过模板字符串导出word文件前端导出 excel文件&#xff0c;node-xlsx导出文件&#xff0c;行列合并 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09; 先看效果&#xf…...

Linux和Windows操作系统在腾讯云幻兽帕鲁服务器上的内存占用情况如何?

Linux和Windows操作系统在腾讯云幻兽帕鲁服务器上的内存占用情况如何&#xff1f; 对于Linux操作系统&#xff0c;有用户分享了个人最佳实践来解决内存问题&#xff0c;包括使用Linux脚本让服务器每天重启一次&#xff0c;以及建议在不需要时尽量减少虚拟内存的使用。此外&…...

腾讯云4核8G的云服务器性能水平?使用场景说明

腾讯云4核8G服务器适合做什么&#xff1f;搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以&#xff0c;腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM&#xff0c;轻量服务器和标准型CVM服务器性能是差不多的&#xff0c;轻…...

Spring with AI (): 搜索扩展——向量数据库与RAG(下)僖

. GIF文件结构 相比于 WAV 文件的简单粗暴&#xff0c;GIF 的结构要精密得多&#xff0c;因为它天生是为了网络传输而设计的&#xff08;包含了压缩机制&#xff09;。 当我们用二进制视角观察 GIF 时&#xff0c;它是由一个个 数据块&#xff08;Block&#xff09; 组成的&…...

Qwen3-ForcedAligner-0.6B在Dify平台上的无代码部署方案

Qwen3-ForcedAligner-0.6B在Dify平台上的无代码部署方案 1. 引言 语音和文本的对齐技术在实际应用中越来越重要&#xff0c;无论是制作字幕、语音分析还是内容创作&#xff0c;都需要精确的时间戳对齐。传统方法往往需要复杂的代码编写和配置&#xff0c;让很多非技术背景的用…...

Redis持久化:从AOF到RDB,如何实现数据不丢失?芈

Qt是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

避开Power BI数据导入的四大坑:从SQL Server连接到Excel表格的实战避坑指南

避开Power BI数据导入的四大坑&#xff1a;从SQL Server连接到Excel表格的实战避坑指南 当你第一次将SQL Server的销售数据与Excel的市场调研表格合并到Power BI时&#xff0c;那个红色感叹号就像一盆冷水浇下来——"查询超时"。这不过是数据工程师日常工作中的第一个…...

前端使用AI试水报告扇

1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容&#xff1a; 渲染代码&#xff1a; # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...

【车辆】simulink自动驾驶赛车基于快速探索随机树的路径规划【含Matlab源码 15318期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

别再只盯着波特率了!手把手教你为你的Arduino/STM32项目选择合适的串口参数(含校验位与传输距离实战)

嵌入式开发实战&#xff1a;如何为Arduino/STM32项目精准配置串口参数 最近在调试一个基于STM32的温室监测系统时&#xff0c;遇到了一个典型问题&#xff1a;传感器数据在3米距离内传输正常&#xff0c;但当我将传感器移到5米外时&#xff0c;数据就开始出现随机错误。这让我意…...

VSCode Markdown PDF 自定义字体与样式全攻略(告别默认僵硬格式)

1. 为什么需要自定义Markdown转PDF的样式&#xff1f; 每次用VSCode把Markdown文件导出为PDF时&#xff0c;总觉得哪里不对劲——默认的字体像是从90年代的打印机里直接蹦出来的&#xff0c;行间距挤得像早高峰地铁&#xff0c;代码块的背景色苍白得像是低血糖患者。这种"…...

BME680气体校准优化:如何将IAQ校准时间从1小时缩短到10分钟?

BME680气体校准优化实战&#xff1a;从1小时到10分钟的高效策略 第一次接触BME680传感器的开发者&#xff0c;往往会被它长达1小时的气体校准时间震惊。在医疗消毒设备实时监测、智能新风系统快速响应等场景中&#xff0c;这种等待简直是奢侈。但通过深入分析BSEC库的state机制…...

仅限头部AI平台内部流出的配额审计清单:覆盖Token级计量、跨模型共享配额、突发流量信用额度等8项稀缺机制

第一章&#xff1a;大模型工程化限流与配额管理 2026奇点智能技术大会(https://ml-summit.org) 在大规模语言模型服务化落地过程中&#xff0c;限流与配额管理是保障系统稳定性、公平性与商业可持续性的核心工程能力。当数百个业务方共享同一套推理集群时&#xff0c;突发流量…...