首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL主从复制与读写分离的工作原理

一、MySQL主从复制的工作原理 1、MySQL支持的复制类型 1)基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,MySQL默认采用基于语句的复制,执行效率高。...2、复制的工作过程 1)在每个事务更新数据完成之前,master在二进制日志记录这些改变。写入二进制日志完成后,master通知存储引擎提交事务。...首先slave开始一个工作线程(I/O),I/O线程在master上打开一个普通的连接,然后开始binlog dump process。...3、MySQL读写分离原理 读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。...目前较为常见的MySQL读写分离分为两种 1)基于程序代码内部实现 在代码中根据select 、insert进行路由分类,这类方法也是目前生产环境下应用最广泛的。

27510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL的复制原理与流程

    MySQL的复制原理与流程1. 复制原理概述MySQL的复制是指将一个数据库实例的数据复制到另一个数据库实例,使两个实例的数据保持一致。...MySQL的复制原理基于主从模式,其中一个数据库实例充当主服务器(Master),负责接收并处理客户端的写操作;其他数据库实例充当从服务器(Slave),负责接收并处理主服务器的二进制日志(Binary...从服务器将解析后的操作内容逐条应用到自己的数据库中,实现数据的复制。3. 复制过程中的关键机制在MySQL的复制过程中,涉及到了一些关键的机制,包括二进制日志、复制线程和复制事件。...3.2 复制线程复制线程是MySQL在从服务器上运行的一个后台线程,负责从主服务器获取二进制日志、解析二进制日志并将其应用到本地数据库中。...了解MySQL的复制原理和流程对于理解和配置复制功能具有重要意义。

    49730

    彻底搞懂MySQL主从复制工作原理 2+3+3+4

    B站搜索“乐哥聊编程“有本篇文章配套视频‍ https://www.bilibili.com/video/BV1v841187jy 什么是主从复制 从mysql3.23版本开始,mysql官方就开始提供主从复制...,最简单的主从复制架构就是有两个mysql节点,一个作为主节点,用户可以进行读写,另外一台作为从节点,从节点只接受主节点同步过来的数据,相当于是数据的备份 主从复制解决了哪些问题 读写分离 数据备份 高可用...架构扩展 有哪几种主从形式 一主多从(一从) 读写分离 HA 多主一从 报表统计 双主复制 互相备份 读写负载均衡 主从级联复制 缓解主节点IO压力 主从复制的工作原理 重要的三个线程 Log...relay log 用来保存从节点I/O线程接受的bin log日志,作为中继日志存在 工作过程 从节点执行 start salve,开启主从复制,从节点I/O线程与主节点建立连接,请求同步数据 主节点接受从节点的数据同步请求...SQL线程 监测到relay log 内容有变化,会将relay追加的内容解析成sql,然后依次执行sql,实现数据同步 主从复制的工作模式 异步复制 mysql默认复制模式,当主节点将数据写到binlog

    66320

    mysql复制系列1-复制的基本原理

    dba面试的时候基本上都会被问复制的原理,但你真的了解吗? 复制有几个线程(分别介绍一下作用) 主库的二进制日志是主库主动推送到从库,还是从库去请求?...其实复制有很多知识点,我们先从复制的基本原理讲起 复制的原理: x.jpg 主库上的所有数据的变更(DDL,DML等)都会被记录到自己的binlog日志中,从库利用从主库传输来的binlog进行回放来模拟主库的数据变更...所以主从复制的原理是: 用户提交数据更改,主库把所有数据的更改写进binlog日志,主库通过binlog dump线程把二进制日志推送给slave(这个时候从库是被动接收数据的,主库主动推送) 从库的...relay log日志中的内容,按照顺序进行回放,并将数据变更写入本地数据文件中,这样就是实现了数据在主从数据库实例之间的同步 每一对主从关系中都有三个线程 主库上的 binlog dump线程(负责推送...binlog日志给io线程) 从库的i/o线程(负责接收主库的binlog日志并写入relay log) 从库sql线程(复制回放relay log日志中主库变更操作) 主库的二进制日志是主库主动推送到从库

    51741

    一定要弄懂的MySQL复制原理~

    而这在海量并发访问的互联网业务中完全不敢想象。所以除了业务架构,还要做好可用性的架构设计。...今天我们就来学习 MySQL 高可用架构中最基础、最为核心的内容:MySQL 复制(Replication)。 MySQL 复制架构 数据库复制本质上就是数据同步。...MySQL 数据库是基于二进制日志(binary log)进行数据增量同步,而二进制日志记录了所有对于 MySQL 数据库的修改操作。...在默认 ROW 格式二进制日志中,一条 SQL 操作影响的记录会被全部记录下来,比如一条 SQL语句更新了三行记录,在二进制日志中会记录被修改的这三条记录的前项(before image)和后项(after...可以在 mysql 命令行下使用命令 SHOW BINLOG EVENTS 查看某个二进制日志文件的内容,比如上述删除操作发生在二进制日志文件 binlog.000004 中,你可以看到:

    21120

    MySQL 主从复制的原理和配置

    主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制。...复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容; 2).Master接收到来自Slave的IO进程的请求后,通过负责复制的...返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置; 3).Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave...端的relay-log文件的最末端,并将读取到的Master 端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log...mysql> create database abc; mysql> show databases; +--------------------+ | Database | +-----------

    809120

    Mysql主从复制的搭建及原理

    这次来了解一下MySQL的主从复制,为什么要用主从复制?是什么原理?...MySQL的主从复制带来很大的好处首先那就是数据复制的一致性,在生产环境中保证了数据的备份,而且主宕机后,从节点可以也可以保证正常工作, 模式有很多一主一从,一主两从,一主多从等等… 原理都是一样的...:主节点将带有ddl和dml的语句记录到自己的二进制日志bin-log中,然后从节点通过I/O线程将二进制日志获取到自己的中继日志relay-log中,从节点通过sql线程将自己的中继日志relay-log...中的命令进行执行,从而实现主从复制结构 本次实验环境两台服务器[一主一从] 服务器IP Centos版本 服务 192.168.2.10 CentOS Linux release 7.6.1810 (...= password('新密码'); 8.至此MySQL安装完毕 9.进行主从复制的设置修改配置文件 配置Master主库机器 开启binlog 设置mysql的唯一编号(mysql5.7即更高版本新加参数

    39310

    Mysql主从复制的搭建及原理

    这次来了解一下MySQL的主从复制,为什么要用主从复制?是什么原理?...MySQL的主从复制带来很大的好处首先那就是数据复制的一致性,在生产环境中保证了数据的备份,而且主宕机后,从节点可以也可以保证正常工作, 模式有很多一主一从,一主两从,一主多从等等… 原理都是一样的...:主节点将带有ddl和dml的语句记录到自己的二进制日志bin-log中,然后从节点通过I/O线程将二进制日志获取到自己的中继日志relay-log中,从节点通过sql线程将自己的中继日志relay-log...中的命令进行执行,从而实现主从复制结构 本次实验环境两台服务器[一主一从] 服务器IP Centos版本 服务 192.168.2.10 CentOS Linux release 7.6.1810 (...= password('新密码'); 8.至此MySQL安装完毕 9.进行主从复制的设置修改配置文件 配置Master主库机器 开启binlog 设置mysql的唯一编号(mysql5.7即更高版本新加参数

    28020

    浅谈MySQL分页查询的工作原理

    前言 MySQL 的分页查询在我们的开发过程中还是很常见的,比如一些后台管理系统,我们一般会有查询订单列表页、商品列表页等。...示例: SELECT * FROM `goods` order by create_time limit 0,10; 在了解order by和limit的工作原理之前,我们首先回顾下 MySQL...接下来,我们分别讲解这两种排序工作原理。 2.2.1 全字段排序 MySQL 会给每个线程分配一块内存用于排序 sort_buffer。...若排序内容不能全部放入内存,则分批次将排好序的内容放入文件,然后将多个文件进行归并排序 若排序中包含 limit 语句,则使用堆排序优化排序过程 3. limit 工作原理 Server 层维护了一个称作...先查询 510 条数据,按照ORDER BY的工作原理进行条件查询和排序,最后汇总的结果在返回给客户端之前,MySQL 会截取第 501 到 510 条数据,最后把这 10 行记录返回给前端。

    2K30

    SwiftUI 中布局的工作原理

    有些事情已经解释过了,有些可能是你自己弄明白的,但更多的是你在这一点上想当然的事情,所以我希望一个详细的探索能真正为 SwiftUI 的工作方式提供一些启示。...SwiftUI 中布局的工作原理 ---- 所有的 SwiftUI 布局都有三个简单的步骤,理解这些步骤是每次获得优秀布局的关键。步骤如下: 父视图提供一个大小并询问其子视图的大小。...这意味着当我们应用修饰符时,进入层次结构的实际视图是修改后的视图,而不是原始视图。 在我们的简单background()示例中,这意味着ContentView中的顶层视图是背景,而内部是文本。...background(Color.red)),文本视图成为其背景的子视图。当涉及到视图及其修改器时,SwiftUI有效地从下到上工作。...当我们在background()中使用它时,简化的布局对话是这样工作的: 背景:嘿,文本,你可以有整个屏幕,你想要多少? 文本:我需要X乘Y点;我不需要其余的。 背景:好的。

    3.8K20

    MySQL中的蠕虫复制操作指南

    蠕虫复制能快速的往表中增添数据,一般用于表结构稳定性测试。...对test2 进行蠕虫复制: 1)从test1 获取原始数据(test1 和test2 的表结构必须相同) insert into test2 select * from test1; 此时,test2...记录数为 1 2)test2 蠕虫复制操作: INSERT INTO test2 SELECT * FROM test2; 你会发现报错: mysql> insert into test2 select...----+ | count(*) | +----------+ | 32 | +----------+ 1 row in set (0.01 sec) 所以,若表有主键并且有自增长,那不复制主键的值即可...还有一种,主键没有自增长,那不复制主键可以吗?答案是不行。因为主键的前提是不能为空,赋值则发生主键冲突,不赋值则引发非空约束(多谢评论区的老哥,以前没有考虑到这种情况)。

    97010

    深入了解MySQL主从复制的原理

    复制原理 MySQL的主从复制支持两种方式: 基于行 基于语句 基于语句的复制在MySQL3.23中就已经有了,而基于行的方式则在5.1中才实现。...创建数据库 然后我创建了一个名为student的DB,其Event_type是Query,这个event的内容为CREATE DATABASE student DEFAULT CHARACTER SET...复制模型 平常的开发中,其实很少说一上来就直接搞主从架构的。费时间、费钱还引入了额外的复杂度,最后发现投入了这么多一个单MySQL服务器就完全能handle。...但是在MySQL 5.5以及之前,都只能将复制的进度记录在relog-log.info文件中。...所以在MySQL 5.7时引入了无损半同步复制,增加了参数rpl_semi_sync_master_wait_point的值,在MySQL 5.7中值默认为after_sync,在MySQL 5.6中默认值为

    45410

    「Mysql索引原理(三)」Mysql中的Hash索引原理

    哈希表中哈希码是顺序的,导致对应的数据行是乱序的。...如果哈希冲突很多,一些索引维护操作的代价会很高。 ? 如果从表中删除一行,需要遍历链表中的每一行,找到并删除对应行的引用,冲突越多,代价越大。...自定义哈希索引 在InnoDB中,某些索引值被使用的非常频繁的时候,它会在内存中基于B+Tree的基础上再创建一个哈希索引,使其不必要在从根节点就行查找。...必须使用Mysql的GIS相关函数如MBRCONTAINS()等来维护数据。Mysql 的GIS并不完善,大部分人不会使用到这个特性。...开源关系数据库中对GIS的解决方案做得比较好的是PostgreSQL的PostGIS。 全文索引 全文索引是一种特殊类型的索引,它查找的是文本中的关键字,而不是直接比较索引中值。

    9K11

    演讲实录:MySQL 8.0 中的复制技术

    在近期的第七届数据技术嘉年华上,甲骨文MySQL研发工程师宋利兵做了“MySQL-8.0中的复制技术”为主题的演讲,介绍了MySQL-8.0中异步复制和Group Replication复制的发展方向,...复制的简介和框架 01 定义 ? 02 MySQL复制技术的简单框架 ?...binary log是MySQL复制的基础,MySQL的这些日志称为逻辑日志,里面记录的是SQL语句级别的,操作的是表中的行数据,它不关心数据在引擎里面是怎么存储的,存储格式是什么样的。 ?...异步复制是为MySQL的使用,以及保障MySQL中数据的高可用起到了很直观的作用。一直到现在,也一直在使用异步复制的模式,随着用户越来越多,使用场景越来越多,对复制技术也提出了更高的要求。...比如如果它在组中是slave角色,就保持read-only,如果它被选为master,则会切换为read-write。 当一个节点离开组的时候也是一样的原理,会自动切换自己的属性。

    1.2K50

    mysql主从复制中的1032错误

    1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 问题 出现了主从不一致,开始分析原因。...slave备机不存在该记录,但是主机master删除时无需报1032错误,可以通过my.cnf可配置slave-skip-errors=1032 从而跳过日志中1032 ERROR报错。...) 上面的解决方式一般解决不了问题或无法永久解决问题时可以采取这种方式: 根据报错信息中的binlog日志文件bin.000094和endlogpos位置537072939来分析binlog,查找实际引发问题的...可以看到是一条更新语句,UPDATE infosys_login. business_login_user_auth_info where XXX ... @1=272998577393905664对应的是库中的...id,去从库中查看时,这条记录确实是被开发人员手动删除了的,从而造成了1032错误。

    6.9K30
    领券