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

MySql主从复制原理

  mysql主从复制原理:
  1.主库会创建一个log dump 线程,用来给产生binlog 数据
  2.从库会生成两个线程(一个读取binlog数据的IO线程,一个执行relay log操作的SQL线程)
     IO线程:从主库中读取binlog数据存储到从库的relaylog中。
     SQL线程:解析relaylog中的操作,并在从库中执行操作实现数据主从数据同步

主库会生成一个 log dump 线程,用来给从库 I/O 线程传 Binlog 数据。

从库的 I/O 线程会去请求主库的 Binlog,并将得到的 Binlog 写到本地的 relay log (中继日志)文件中。

SQL 线程,会读取 relay log 文件中的日志,并解析成 SQL 语句逐一执行。

主节点 log dump 线程

当从节点连接主节点时,主节点会为其创建一个 log dump 线程,用于发送和读取 Binlog 的内容。在读取 Binlog 中的操作时,log dump 线程会对主节点上的 Binlog 加锁;当读取完成发送给从节点之前,锁会被释放。 主节点会为自己的每一个从节点创建一个 log dump 线程 。

从节点I/O线程

当从节点上执行 start slave 命令之后,从节点会创建一个 I/O 线程用来连接主节点,请求主库中更新的Binlog。I/O 线程接收到主节点的 log dump 进程发来的更新之后,保存在本地 relay-log(中继日志)中。

relay log

这里又引申出一个新的日志概念。MySQL 进行主主复制或主从复制的时候会在要复制的服务器下面产生相应的 relay log。

relay log 是怎么产生的呢?

从服务器 I/O 线程将主服务器的 Binlog 日志读取过来,解析到各类 Events 之后记录到从服务器本地文件,这个文件就被称为 relay log。然后 SQL 线程会读取 relay log 日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。中继日志充当缓冲区,这样 master 就不必等待 slave 执行完成才发送下一个事件。

relay log 相关参数查询:

https://www.cnblogs.com/zouhong/p/16171808.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker 升级步骤
  • C++ prime plus-7-編程練習
  • VMware虚拟机因磁盘空间不足黑屏无法登录
  • matlab绘制二维云图,划分区域,并显示每个区域的均值
  • KVM环境下制作ubuntu qcow2格式镜像
  • 基于SpringBoot的漫画网设计与实现
  • 人工智能快速发展下的极端风险管理
  • 力扣中等 33.搜索旋转排序数组
  • C语言 | Leetcode C语言题解之第415题字符串相加
  • proteus仿真学习(1)
  • 机器人的动力学——牛顿欧拉,拉格朗日,凯恩
  • ARM/Linux嵌入式面经(三八):绿盟科技
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 谈谈黑盒测试方法
  • c语言中“qsort函数”和“结构体成员访问变量”
  • 【译】JS基础算法脚本:字符串结尾
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【个人向】《HTTP图解》阅后小结
  • JavaScript实现分页效果
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • log4j2输出到kafka
  • nodejs:开发并发布一个nodejs包
  • Node项目之评分系统(二)- 数据库设计
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • React中的“虫洞”——Context
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Twitter赢在开放,三年创造奇迹
  • 包装类对象
  • 创建一个Struts2项目maven 方式
  • 理清楚Vue的结构
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小而合理的前端理论:rscss和rsjs
  • 06-01 点餐小程序前台界面搭建
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #QT 笔记一
  • #Z0458. 树的中心2
  • #传输# #传输数据判断#
  • (pycharm)安装python库函数Matplotlib步骤
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)原生js案例之数码时钟计时
  • (分布式缓存)Redis持久化
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (利用IDEA+Maven)定制属于自己的jar包
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法)硬币问题
  • *1 计算机基础和操作系统基础及几大协议
  • .CSS-hover 的解释
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net Application的目录
  • .NET C# 配置 Options