首页 > 数据库 >Mysql主从复制原理

Mysql主从复制原理

时间:2023-09-14 14:37:15浏览次数:45  
标签:主从复制 Slave log master IO Mysql 进程 原理 日志


 


本文总结自网上关于Mysql复制原理的一些文章。



----------------------------------------------------------



1、Mysql复制是一个异步的复制,从master instance到slave instance,实现整个复制操作主要使用3个进程完成。其中2个进程是Slave的Sql进程和IO进程,另一个进程是Master的IO进程。要实施复制,首先必须打开Master端的binary log,因为整个复制实际上就是Slave从Master端获取日志然后再在自己实例上完全顺序执行日志中所记录的各种操作。


2、基本过程:


(1)Slave上的IO进程连接到Master,请求指定日志文件的指定位置(或从最开始的日志)之后的日志内容。


(2)Master接收到Slave的IO请求后,将负责复制的IO进程根据请求读取指定日志信息,返回给Slave的IO进程。


(3)Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到master的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够告诉master,需要从哪个文件的哪个位置开始往后的内容日志。


(4)Slave的Sql进程检测到relay-log中新增加了内容后,马上会解析relay-log的内容并自身执行在master端真实执行过的那些可执行内容。


3、Mysql在从master端获取bin-log之后,需要接着解析日志内容,然后再自身执行。如果Slave压力较大时,这个过程可能时间比较长。后面的版本将Slave端的复制改为2个进程来完成。这样既提高了性能,又缩短了异步延时时间。但同样存在Slave数据延时和数据丢失的可能性,只能用mysql cluster解决。



附一篇网络上的文章:


http://dinglin.iteye.com/blog/1266194 Mysql主从同步延时多久?

标签:主从复制,Slave,log,master,IO,Mysql,进程,原理,日志
From: https://blog.51cto.com/u_6978506/7470094

相关文章

  • MYSQL单列索引和组合索引的对比分析
    单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引:即一个索包含多个列。怎么选择:如果查询where条件只有一个,完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。如果业务场景是需要经常查询多个组合列,不要试图分别基于单个列建立多个单......
  • MySQL篇:第三章_详解DQL语言
    DQL语言的学习基础查询一、语法:SELECT要查询的东西【FROM表名】;类似于Java中:System.out.println(要打印的东西);特点:①通过select查询完的结果,是一个虚拟的表格,不是真实存在②要查询的东西可以是常量值、可以是表达式、可以是字段、可以是函数二、特点1、查询......
  • mysql事务回滚
    前几天发现程序有个Bug:使用JPA已经设置了回滚,但抛出异常后,提交的事务并没有回滚。刚开始以为是JPA使用问题,debug了近2个多小时竟然找不到原因。后来上网查了一下,才发现不是程序问题(坑爹啊,看来自己对mysql还是不熟),是数据库表问题(JPA自动建表)。原因如下:mysql建表时如果指定ENG......
  • MySQL篇:bug2_ Navicate无法添加或更新子行-外键约束失败
    问题产生原因Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。解决办法解决方法是在Mysql中取消外键约束:SETFOREIGN_KEY_CHECKS=0;再添加值,然后再设置外键约束:SETFOREIGN_KEY_CHECKS=1;查看当前FOREIGN_KEY_CHECKS的值可用如下命令:SELECT@@FOR......
  • N天爆肝数据库——MySQL(2)
    (N天爆肝数据库——MySQL(2))链接:link这是csdn专栏链接,大家可以看一看,提提意见本篇文章,主要对DMLDQL进行知识总结和学习。期待和大家一起学习进步。DML-介绍DML(数据库操作语言),用来对数据库中表的数据记录进行增删改操作。添加数据(INSERT)修改数据(UPDATE)删除数据(DELET......
  • Laf 云开发平台及其实现原理
    Laf产品介绍自我介绍大家好,我是来自Laf团队的王子俊,很高兴今天能在这里给大家分享我们Laf云开发平台及其实现原理。本来想说一点什么天气之类的话作为开头,但主持人都说完啦,我就不多说了,还是直接开始今天的分享吧。产品介绍在准备PPT的时候,我想过很多种的方式来介绍......
  • 4.1 应用层Hook挂钩原理分析
    InlineHook是一种计算机安全编程技术,其原理是在计算机程序执行期间进行拦截、修改、增强现有函数功能。它使用钩子函数(也可以称为回调函数)来截获程序执行的各种事件,并在事件发生前或后进行自定义处理,从而控制或增强程序行为。Hook技术常被用于系统加速、功能增强、等领域。本章将......
  • C# Async、Await原理
    1、使用异步编程需要async和await:Task任务可以使用aweit匿名方法(包括Lambda表达式),通过async也可以变成异步方法2、加asyncawait表示这个方法可以异步顺序执行。(不加await会出现并行执行)3、async+await函数调用不会造成阻塞,它内部所有的await阻塞都被封装在一......
  • mysql 的用法
    MySQL是一个由瑞典MySQLAB公司开发的关系型数据库管理系统,属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL......
  • MySQL 和 Python:无缝结合的数据库应用
    MySQL和Python都是广泛应用于软件开发的重要工具。MySQL是一种强大的关系型数据库管理系统,而Python则是一种灵活的高级编程语言。它们之间的紧密集成为开发人员提供了强大的数据存储和操作能力。本文将探讨MySQL和Python之间的关系,并提供一些示例代码来演示如何在Python......