MySQL主从复制与读写分离

MySQL主从复制读写分离 前言在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。 MySQL主从复制MySQL读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。主MySQL 阅读详情

一.主从复制

       主从复制:在实际的生产中,为了解决Mysql的单点故障以及提高MySQL的整体服务性能,一般都会采用主从复制。即:对数据库中的数据、语句做备份。

在这里插入图片描述

主从复制三线程

       Mysql的主从复制中主要有三个线程:master(binlog dump thread)、slave(I/O thread 、SQL thread),Master一条线程和Slave中的两条线程。

主从复制过程

       主从复制的过程:

  • master主要负责Master库中有数据更新的时候,会按照binlog格式,将更新的事件类型写入到主库的binlog文件中。Master会创建log dump线程通知Slave主库中存在数据更新。

  • I/O thread线程在Slave中创建,该线程用于请求Master,Master会返回binlog的名称以及当前数据更新的位置、binlog文件位置的副本。然后,将binlog保存在 relay log(中继日志) 中,中继日志也是记录数据更新的信息。

  • SQL线程也是在Slave中创建的,当Slave检测到中继日志有更新,会将更新的内容同步到Slave数据库中,保证了主从的数据的同步。

    主从复制策略

       主从复制的策略:

  • 同步策略:Master会等待所有的Slave都回应后才会提交,这个主从的同步 的性能会严重的影响。

  • 半同步策略:Master至少会等待一个Slave回应后提交。

  • 异步策略:Master不用等待Slave回应就可以提交。

  • 延迟策略:Slave要落后于Master指定的时间。
           对于不同的业务需求,有不同的策略方案,但是一般都会采用最终一致性,不会要求强一致性,强一致性会严重影响性能。

主从复制高延迟

       主从复制高延迟的原因

  • master 服务器高并发,形成大量事务

  • 网络延迟

  • 主从硬件设备导致(cpu 主频、内存 io、硬盘 io)

  • 本来就不是同步复制、而是异步复制

       主从复制高延迟的解决办法

  • 从库优化 Mysql 参数。比如增大 innodb_buffer_pool_size,让更多操作在 - mysql 内存中完成,减少磁盘操作

  • 从库使用高性能主机(高性能 cpu、大内存),避免使用虚拟云主机,使用物理主机,提升 I/O 吞吐量

  • 从库使用 SSD 磁盘

  • 网络优化,避免跨机房实现同步

二.读写分离

在这里插入图片描述

读写分离概念

       读写分离:读写分离是让主数据库处理事务性增、删、改操作(INSERT、UPDATE、DELETE),而从数据库处理查(SELECT) 操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库中。

读写分离原因与场景

       读写分离原因:读写量很大,为了提升数据库读写性能,将读写进行分离;多机房下如果写少读多,同时基于数据一致性考虑,只有一个主库存入所有的数据写入,本地再做从库提供读取,减少多机房间直接读取带来的时延。

       读写分离使用场景:程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。

Mysql 主从复制读写分离 在企业应用中,成熟的业务通常数据量都比较大 单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求 配置多台主从数据库服务器以实现读写分离 阅读详情

相关推荐

xhs私信协议分析

之前分析过xhs的shield算法,今天再聊聊xhs的私信,文章仅供学习参考研究交流,如有侵权请联系删帖。经过抓包分析发现私信接口并不是走的http协议,而是socket协议。而要获取socket包则需要使用wireshark软件1、protobuf的包体中的序号7,多次验证后发现文字信息的需要需要固定成12、protobuf的包体中的序号12,多次验证后发现文字信息的需要需要固定成1后续有时间的话,再研究一下视频和图片格式的私信协议,这次就分析到这里吧。

佛系更新... 3393

MySQL 数据宝典】【线模型】-IO Thread、Puge Thread介绍

通过异步IO,InnoDB能够在进行IO操作时不阻塞其他线的执行,从而更高效地处理读写请求。作用是将脏数据刷新到磁盘,脏数据刷盘后相应的redo log也就可以覆盖,即可以同步数据,又能达到redo log循环使用的目的。InnoDB的Master Thread是主线,担负着调度其他各个线的重要任务,其优先级最高。而在后续版本中,read thread和write thread分别增大到了4个,总共有10个IO线。,该命令将显示当前InnoDB引擎的详细状态信息,包括IO线的数量和状态等。

黄金时代的架构之路 1606

Excel基金净值自动更新:手把手教你用Power Query抓取天天基金网数据(含常见错误修复)

本文详细介绍了如何利用Excel内置的Power Query工具,从天天基金网自动抓取基金净值数据,实现表格数据的自动刷新。通过手把手教,您将学会构建参数化查询、整合多基金数据、计算持仓盈亏,并解决网页结构变动等常见错误,最终打造一个专属的、可自动更新的基金监控仪表盘,彻底告别手动更新。

xx56789的博客 628

MySQL 主要线

mysql中主要线

jiaona_chen123的博客 1804

MySql后台线讲解

一、Master Thread Master Thread具备最高的线优先级。其内部有 主循环(loop) 后台循环(backgroup loop) 刷新循环(flush loop) 暂停循环(suspend loop) 多个循环(loop)组成。Master Thread会根据数据库的状态在这些循环之间切换。Loop被称为主循环,因为大多数的操作都是在这个循环中,其中有两大部分的操作:每秒钟的操作和每10秒的操作 每秒钟的操作包含以下内容: 重做日志缓冲刷新到磁盘,即使这个事务还没有提交(总是)

weixin_68009402的博客 783

mysql的重要线

MySQL数据库系统运行时涉及多个线来执行不同的任务。

qq_35693377的博客 1270

mysql的连接池和线

本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。

努力成为DBA的小王博客 2389

MySQL体系结构

此文对MySQL数据库内部结构的简单解析。可以帮助更好的了解mysql内部结构及优化

weixin_46284374的博客 1968

内存数据库和非内存数据库中哪些使用单线,哪些使用了多线

内存数据库 CPU 非瓶颈(内存/网络是瓶颈)14 需加速网络 I/O 或后台任务 26。• 内存数据库(如 Redis)单线优化原子性低延迟,辅以多线突破 I/O 瓶颈;经典版本为纯单线,后改为多线模型(如 Memcached 1.5+)。• 非内存数据库因磁盘 I/O 延迟必须多线,否则吞吐量受限。• MongoDB:网络 I/O、查询执行、复制均多线化。• CockroachDB:多线处理分布式事务存储。• Cassandra:多线处理读写请求压缩任务。

slty_123的博客 479

开源数据库 - mysql - innodb线

MySQL的InnoDB存储引擎是一个多线的模型,其后台包含多个不同的线,负责处理不同的任务。这些线共同协作,使得InnoDB存储引擎能够高效地处理各种数据库操作,并提供高并发、高性能的数据库服务。同时,MySQL和InnoDB也提供了丰富的配置参数,允许数据库管理员根据具体的硬件环境和业务需求,对线的数量和行为进行精细的调整和优化。在Linux系统中,可以通过多种方式来查看MySQL的各个线

weixin_46325250的博客 1734

深入理解MySQL InnoDB线模型

在Innodb存储引擎中,后台线的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外它会将已经修改的数据文件刷新到磁盘文件中,保证在发生异常的情况下,Innodb能够恢复到正常的运行状态。InnoDB后台线模型是一个多线架构,旨在充分利用多核处理器的优势,实现高效的并发处理。它主要包括Master Thread(主线)、IO Thread(IO线)、Purge Thread(清除线)和Page Cleaner Thread(页面清洁线)等组件。

码到三十五 1844

到底为什么MySQL可以在多线环境下表现出更佳的性能表现?

MySQL 在多线环境下表现出更佳的性能是因为它能够并发处理多个任务,就像请多个朋友一起帮忙做事,效率更高。使用场景包括高并发查询、锁机制优化、异步 I/O 和后台任务处理、并行查询等,确保不同类型的请求都能快速得到响应。底层原理涉及线池管理、锁机制优化、异步 I/O 和后台任务处理、并行查询技术,使得 MySQL 能够充分利用硬件资源,提供高效的多线支持。

长风破浪会有时的博客 632

Mysql系列之多线复制(5)

2. 配置为LOGICAL_CLOCK,表示的就是类似MariaDB的策略并针对并行度做了优化:处于所有执行中的状态不能并行,所有处于redo log prepare状态的事务可以并行(此时已经通过了锁冲突检测)1.事务在备库上执行的时候,不能完全主库一样并行,要等第一组事务完全执行完成后,第二组事务才能开始执行,系统的吞吐量不够。如果两个事务更新不同的表,它们就可以并行。当然,对于“表上没主键”和“外键约束”的场景,WRITESET策略也是没法并行的,也会暂时退化为单线模型。

zincooo的博客 779

MySQL 体系结构概览:存储引擎、线

MySQL 作为世界上最流行的开源数据库之一,其体系结构设计直接影响着数据库的性能、可扩展性和稳定性。要深入理解 MySQL,我们需要从。处理并发请求,以提高性能。理解 MySQL 的体系结构有助于优化数据库的使用,提高查询效率和系统稳定性。你可以根据自己的业务需求选择不同的存储引擎,并调整 MySQL 线管理策略来优化数据库性能!MySQL 提供了多种存储引擎,用户可以根据业务需求选择合适的引擎。,不同存储引擎负责数据存储,服务器层负责 SQL 解析和优化。,支持多种存储引擎,并采用。

wx126851880的博客 894

Mysql线池系列一( thread_pool 和 connection_pool)

thread_pool 和 connection_pool 当客户端请求的数据量比较大的时候,使用线池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来。而数据库连接池的使用则将大大提高序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。...

weixin_33842328的博客 413

MySQL活跃线数高问题

活跃线数或活跃连接数是衡量MySQL负载状态的关键指标,通常来说一个比较健康的实例活跃连接数应该低于10,高规格和高QPS的实例活跃连接数可能20、30,如果出现几百、上千的活跃连接数,说明出现了SQL堆积和响应变慢,严重时会导致实例停止响应,无法继续处理SQL请求。的状态,在DDL prepare和commit阶段,DDL语句需要获取MDL锁,如果表上有未提交事务或慢SQL,会阻塞DDL操作,DDL操作又会阻塞其他的SQL,最终导致活跃线数升高。,可以查看实例的活跃线数监控信息。

乌龟的专栏 590

mysql源码解读 — 线池和线

一、MySql中的线mysql中,每一个连接上来,就会分配给一个相关的THD数据类。在前面的分析中可以看到,连接器(Connectors)连接到的直接就是连接池,在连接池的线处理中分为三部分,即一对一(一个连接对应一个线),多对一(多个连接对应一个线)和线池(多对多)。 线池和线可以针对不同的具体场景来处理具体的事务,这样既兼顾了效率又提高了适应性,对于新手来说,这就是设计的一个缩影。MySql中的线较Redis要复杂一些(当然针对的是REDIS6以前版本),在下面的分析中会对三种方式进

fpcc的专栏 814

安卓端短视频播放应用实战项目(含完整源码演示视频)

这是一个基于Android平台开发的短视频类应用,核心功能包括首页视频信息流展示,每条视频显示作者昵称、发布时间、点赞数等基础元数据;点击任意视频封面即可跳转至全屏播放页,支持手势滑动切换上下条视频、双击点赞、底部评论入口等交互逻辑。项目采用标准Android Studio工结构,包含app模块、gradle构建配置、README说明文档、两段APP实际运行演示录像(MP4格式),以及配套的课设计报告(Word)、答辩PPT和移动互联网技术大作业说明文档。所有代码可直接导入Android Studio编译运行,适配主流Android版本,适合课设计、毕业设计或Android入门实战练习使用。

上一篇: Linux管理进程
下一篇: linux日志文件
ge_bq
博客等级 码龄7年 25粉丝 · 46原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值