Mysql主从同步的实现原理
发布时间 - 2026-01-11 00:09:05 点击率:次1、什么是mysql主从同步?

当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。
2、主从同步有什么好处?
- 水平扩展数据库的负载能力。
- 容错,高可用。Failover(失败切换)/High Availability
- 数据备份。
3、主从同步的原理是什么?
首先我们来了解master-slave的体系结构。
如下图:
不管是delete、update、insert,还是创建函数、存储过程,所有的操作都在master上。当master有操作的时候,slave会快速的接收到这些操作,从而做同步。
但是,这个机制是怎么实现的呢?
在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);在slave机器上,slave读取主从同步事件,并根据读取的事件变化,在slave库上做相应的更改。
如此,就实现了主从同步了!
下面我们来详细的了解。
3.1主从同步事件有哪些
上面说到:
在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);
主从同步事件有3种形式:statement、row、mixed。
- statement:会将对数据库操作的sql语句写入到binlog中。
- row:会将每一条数据的变化写入到binlog中。
- mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。
3.2在master机器上的操作
当master上的数据发生改变的时候,该事件(insert、update、delete)变化会按照顺序写入到binlog中。
binlog dump线程
当slave连接到master的时候,master机器会为slave开启binlog dump线程。当master 的 binlog发生变化的时候,binlog dump线程会通知slave,并将相应的binlog内容发送给slave。
3.3在slave机器上的操作
当主从同步开启的时候,slave上会创建2个线程。
- I/O线程。该线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log。
- SQL线程。该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。
3.4如何在master、slave上查看上述的线程?
使用SHOW PROCESSLIST命令可以查看。
如图,在master机器上查看binlog dump线程。
如图,在slave机器上查看I/O、SQL线程。
4、讲了这么多,一图以蔽之
5、关于实战
关于实战,请参考我的另一篇文章:Mysql主从同步实战
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Mysql主从同步
# mysql主从同步原理
# mysql
# 主从同步配置
# Mysql主从同步备份策略分享
# mysql主从同步复制错误解决一例
# 详解Mysql主从同步配置实战
# MYSQL主从数据库同步备份配置的方法
# MySQL主从同步(复制)操作实战记录
# 机器上
# 会将
# 什么时候
# 写到
# 如图
# 连接到
# 发送给
# 都在
# 是怎么
# 这么多
# 说到
# 并将
# 会为
# 讲了
# 再将
# 请参考
# 上做
# 上会
# 大家多多
# 可以查看
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Android Socket接口实现即时通讯实例代码
Laravel如何创建自定义中间件?(Middleware代码示例)
如何在Windows虚拟主机上快速搭建网站?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Laravel如何实现API资源集合?(Resource Collection教程)
进行网站优化必须要坚持的四大原则
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
WordPress 子目录安装中正确处理脚本路径的完整指南
Laravel如何使用Blade组件和插槽?(Component代码示例)
EditPlus中的正则表达式实战(6)
Laravel如何集成Inertia.js与Vue/React?(安装配置)
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
如何在IIS中配置站点IP、端口及主机头?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
音乐网站服务器如何优化API响应速度?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
如何在云主机上快速搭建多站点网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何为不同团队 ID 动态生成多个非值班状态按钮
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何用好域名打造高点击率的自主建站?
EditPlus 正则表达式 实战(3)
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何选择PHP开源工具快速搭建网站?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel如何配置Horizon来管理队列?(安装和使用)

