MySQL的主从同步原理
MySQL的主从同步(也称为复制)是一种数据同步技术,用于将一个MySQL服务器(主服务器)上的数据和变更实时复制到另一个或多个MySQL服务器(从服务器)。这项技术支持数据备份、读写分离、故障恢复等多种应用场景。以下是MySQL主从同步的基本工作原理:
1. 二进制日志(Binary Log)
- 主服务器上的所有数据修改(如INSERT、UPDATE、DELETE操作)都会记录在二进制日志中。这个日志是MySQL主从同步的基础,记录了所有对数据库进行更改的事件。
- 二进制日志文件和位置是同步过程中定位变更的关键信息。
2. 日志位置点(Log Position)
- 每个事件在二进制日志中的位置都由一个日志位置点表示,这确保了从服务器可以精确地知道需要从哪里开始或继续复制数据。
3. 复制IO线程
- 当从服务器启动并连接到主服务器时,它会启动一个IO线程。这个线程请求从上一次同步后的二进制日志位置点开始,复制主服务器上的二进制日志事件。
4. 重放SQL线程
- 从服务器接收到二进制日志事件后,它会将这些事件写入自己的中继日志(Relay Log)。
- 然后,从服务器启动一个SQL线程来读取中继日志中的事件,并在自己的数据库上重放这些事件,从而实现数据的同步。
主从同步流程
- 记录:主服务器上的数据更改被记录到二进制日志。
- 请求和复制:从服务器的IO线程连接到主服务器,请求从某个二进制日志位置点开始的数据变更,并将接收到的数据写入到中继日志。
- 重放:从服务器的SQL线程读取中继日志中的事件,并在本地数据库上重放这些事件,完成数据的同步。
同步类型
- 异步复制:主服务器在写入二进制日志后即完成了复制操作,不会等待从服务器确认。这是MySQL默认的复制方式。
- 半同步复制:主服务器在写入二进制日志后会等待至少一个从服务器确认已收到并记录下日志事件后才认为复制操作完成。这提高了数据一致性,但可能会增加主服务器的响应时间。
注意事项
- 主从同步过程中,主服务器的性能影响较小,但是网络延迟和从服务器处理事件的速度可能会导致从服务器与主服务器之间的延迟。
- 管理者需要监控复制延迟,并确保所有从服务器都能及时地跟上主服务器的数据变更。
通过主从同步,MySQL能够支持高可用性、负载均衡和数据冗余,但需要仔细管理和监控以确保系统的稳定性和数据的一致性。
让我们用一个简单的例子来说明MySQL主从同步的原理,想象一下有一家连锁书店,主服务器是总店的账本,而从服务器是分店的账本。
-
步骤1:记录交易
- 每当有顾客在总店买书时,总店的账本(主服务器的二进制日志)就会记录下这笔交易,比如“顾客买了一本《哈利·波特》”。
-
步骤2:通知分店
- 分店(从服务器)每隔一段时间就会给总店打电话(从服务器的IO线程连接到主服务器),询问自上次通话以来,总店有没有新的交易。
- 总店告诉分店最新的交易信息,并将这些信息通过电话(网络)传递给分店。
-
步骤3:分店记录交易
- 分店接到电话后,会在自己的备用账本(中继日志)上记录下这些交易信息。
-
步骤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++之结构体
结构体 //一、结构体的概念、定义和使用 // 概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型 #include<iostream> using namespace std; #include<string> //1.创建学生数据类型:学生包括(姓名&am…...
分布式ID选型对比(1)
常见的几种ID生成方式对比: 种类 全局唯一 高性能 高可用 趋势递增 中心服务 缺点 UUID 是 高(本地生成,(无网络开销) 低(无序,不适用) 否 否 无序、字符串 数据库自增 单表唯一 中 中(宕机就会使业务服务中断) 是 否 安全性差,能猜出来规律 对于分库分表场景无法唯一 数据库自…...
T-SQL 高阶语法之存储过程
一:存储过程概念 预先存储好的sql程序,通过名称和参数进行执行,供应程序去调用,也可以有返回结果,存储过程可以包含sql语句 可以包含流程控制、逻辑语句等。 二:存储过程的优点 执行速度更快 允许模块化…...

解决鸿蒙模拟器卡顿的问题
缘起 最近在学习鸿蒙的时候,发现模拟器非常卡,不要说体验到鸿蒙的丝滑,甚至到严重影响使用的程度。 根据我开发Android的经验和在论坛翻了一圈,最终总结出了以下几个方案。 创建模拟器 1、在DevEco Virtual Device Configurat…...
【LeetCode每日一题】【BFS模版与例题】863.二叉树中所有距离为 K 的结点
BFS的基本概念 BFS 是广度优先搜索(Breadth-First Search)的缩写,是一种图遍历算法。它从给定的起始节点开始,逐层遍历图中的节点,直到遍历到目标节点或者遍历完所有可达节点。 BFS 算法的核心思想是先访问当前节点的…...

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

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

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

博途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集合中添加一个已经存在的元素时,Set集合会如何处理呢?实际上,Set集合不会将重复的元素添加到集合中。当我们向Set集合中添加一个元素时,Set集合会首先判断该元素是否已…...
最新消息:英特尔宣布成立全新独立运营的FPGA公司——Altera
今天,英特尔宣布成立全新独立运营的FPGA公司——Altera(2015年6月Intel以 167 亿美元的价格,收购FPGA厂商Altera)。首席执行官Sandra Rivera和首席运营官Shannon Poulin分享展示其在超过550亿美元的市场中保持领先性的战略规划&am…...

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

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

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

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

前端导出word文件的多种方式、前端导出excel文件
文章目录 纯前借助word模板端导出word文件 (推荐)使用模板导出 前端通过模板字符串导出word文件前端导出 excel文件,node-xlsx导出文件,行列合并 纯前借助word模板端导出word文件 (推荐) 先看效果…...

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

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

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...