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主从同步其实就是一个信息传递和更新的过程,保证了数据在主服务器和一个或多个从服务器之间的一致性和同步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帝国cms7.5仿非小号区块链门户资讯网站源码 带手机版

帝国cms7.5仿非小号区块链门户资讯网站源码 带手机版 带自动采集 开发环境:帝国cms 7.5 安装环境:phpmysql 包含火车头采集规则和模块,采集目标站非小号官网。 专业的数字货币大数据平台模板,采用帝国cms7.5内核仿制&#xff0…

LeetCode_22_中等_括号生成

文章目录 1. 题目2. 思路及代码实现(Python)2.1 暴力法2.2 回溯法 1. 题目 数字 n n n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入: n 3 n 3 …

Ai-WB2-32S在window下使用vs 和 msys2编译以及烧录

文章目录 前言一、使用前准备第一步 安装vscode第二步 安装msys2 二、使用步骤1.打开MSYS2 MINGW64(1)在开始栏中找到MSYS2 MINGW64并打开(2)安装git(3)安装make(4)安装好之后的文件…

前端面试练习24.3.1

一.进程和线程的区别 进程:是程序的一次执行过程,拥有独立的内存空间 线程:是进程中的一个执行单元,共享所属进程的内存空间和系统资源 进程(Process)和线程(Thread)是操作系统中的重要概念,它…

Redis 之五:Redis 的主从复制

概念 主从复制,是指将一台 Redis 服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节…

【0272】postgres内核分配 MyBackendId 实现原理(MyBackendId、MyProc、shmInvalBuffer)(三)

相关文章: 【0255】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(一) 【0256】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(二) 第一个backend process前,shmInvalBuffer的值情况 (gdb) p *shmInvalBuffer $153 = {minMsgNum =

webpack-cli

webpack-cli做了什么 webpack-cli 是 Webpack 提供的命令行工具,用于在命令行中执行 Webpack 相关的操作。webpack-cli 主要完成以下几项工作: 解析和处理命令行参数:webpack-cli 负责解析用户在命令行中输入的参数,包括配置文件…

云天励飞战略投资神州云海,布局机器人市场

日前,AI上市企业云天励飞(688343.SH)完成了对深圳市神州云海智能科技有限公司(以下简称“神州云海”)的B轮战略投资。 公开资料显示,自2015年于深圳创立以来,神州云海始终聚焦人工智能与服务机器人广阔的应用市场,依托自主的核心算法能力,深耕机器人硬件本体研发,整合上下游产…

Java学习笔记001——入门基础知识

Java语言是一种高级编程语言,它采用了面向对象编程的思想,具有跨平台性和安全性等优点。现如今,Java语言成为了世界上最流行的编程语言之一。 前一段学习Python语言,本文是学习java的第一篇笔记。 1. java运行环境搭建&#xff…

RabbitMQ-TTL/死信队列/延迟队列高级特性

文章目录 TTL死信队列消息成为死信的三种情况队列如何绑定死信交换机 延迟队列RabbitMQ如何实现延迟队列 总结来源B站黑马程序员 TTL TTLTTL(Time To Live):存活时间/过期时间当信息到达存活时间后,还没有被消费,会被自动清除。RabbitMQ可以对消息设置过…

Win10系統如何重置系统

Win10系統如何重置 大家可以使用Win10內建的重設電腦設定,如以下操作: 首先,可以先到桌面左下角的【開始】 選擇【設定】 在【設定】裡找到【更新與安全性】 在左側欄有一項【復原】 在復原的標題下,副標題有一項【重設此電腦】…

【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:AcWing算法学习笔记 💬总结:希望你看完…

tvm交叉编译参考资料整理

环境 ubuntu20.04,ndk交叉编译部署到adnroid手机 参考: TVM部署神经网络模型到android端_tvm android-CSDN博客 使用TVM在android中进行Mobilenet SSD部署 - 知乎

深度探析低代码:助力“数智转型”赋能中国制造

随着数字化和智能化技术的飞速发展,我国制造业正面临着从传统制造向智能制造的转型升级。在这个过程中,低代码技术作为一种创新性的软件开发模式,逐渐成为助力我国制造业数智转型的关键驱动力。本文将从低代码技术的原理、应用场景以及在我国…

​The Sandbox的南极之旅|链接世界:从南极洲到元宇宙

真正的发现之旅不在于寻找新的景观,而在于拥有新的眼光。 - 马塞尔-普鲁斯特 在这个数字世界和物理世界日益交织的时代,The Sandbox 的联合创始人 Arthur Madrid 和 Sebastien Borget 踏上了远离数字空间的旅程,前往地球上未被开发的宝藏地点…

无用工作、UBI与AI

有些隐晦和黑暗的事实无法陈述,因为任何的系统中“无用”的结局都是被无情的抛弃和淘汰,AI监督下的人类结局更是如此。 什么是无用工作? 无用无效工作通常指的是那些看似忙碌但实际上对社会或个人没有实质性贡献的工作。这类工作可能包括以下…

2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024)

2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024) 一、【会议简介】 2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024)将于2024年在西安举行。会议将围绕环境工程、能源系统与化学材料等议题展开讨论,旨在为从事环境工程…

ABB双语言共享充电宝投资理财源码/共享充电宝系统源码/共享充电宝市场分析/五级分销返利+地图显示模式

ABB双语言共享充电宝投资理财源码/五级分销返利地图显示模式/vue编译后前端 测试环境:Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.6,根目录public,伪静态laravel5, 源码下载:https://download.csdn.net/download/m0_…

人脸高清算法GFPGAN之TensorRT推理

1. 综述 最近由于做数字人项目,采用的是wav2lip GFPGAN进行人脸面部高清,但GFPGAN模型本身比较大,所以想着使用TensorRT来代替原始的pth推理看看能否提升运行速度,于是便开始了这趟windows1之下进行GFPGAN的trt推理的折腾之旅。…

varFormatter 数据格式化库 以性能优先的 快速的 内存对象格式转换

varFormatter 数据格式化 技术 开源技术栏 对象/变量格式化工具库,其支持将一个对象进行按照 JSON XML HTML 等格式进行转换,并获取到结果字符串! 目录 文章目录 varFormatter 数据格式化 技术目录介绍获取方式 使用实例格式化组件的基本使…