MySQL数据库:读写分离

article/2025/9/25 7:00:13

一、读写分离的原理:

1、实现原理:

读写分离解决的是,数据库的写操作,影响了查询的效率,适用于读远大于写的场景读写分离的实现基础是主从复制,主数据库利用主从复制将自身数据的改变同步到从数据库集群中,然后主数据库负责处理写操作(当然也可以执行读操作),从数据库负责处理读操作,不能执行写操作。并可以根据压力情况,部署多个从数据库提高读操作的速度,减少主数据库的压力,提高系统总体的性能。

2、读写分离提高性能的原因:

(1)增加物理服务器,负荷分摊;

假如我们有1主3从,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,也就是拿机器和带宽换性能。

(2)主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;

(3)从库可配置MyISAM引擎,提升查询性能以及节约系统开销;

(4)主从复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务。

3、Mysql读写分写的实现方式:

(1)基于程序代码内部实现:

在代码中根据select 、insert进行路由分类,这类方法也是目前生产环境下应用最广泛的。优点是性能较好,因为程序在代码中实现,不需要增加额外的硬件开支,缺点是需要开发人员来实现,运维人员无从下手。

(2)基于中间代理层实现:

代理一般介于应用服务器和数据库服务器之间,代理数据库服务器接收到应用服务器的请求后根据判断后转发到后端数据库,有以下代表性的代理层。

①mysql_proxy。mysql_proxy是Mysql的一个开源项目,通过其自带的lua脚本进行sql判断。

②Atlas。是由 奇虎360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事务以及存储过程。

③Amoeba。由阿里巴巴集团在职员工陈思儒使用序java语言进行开发,阿里巴巴集团将其用户生产环境下,但是他并不支持事物以及存储过程。

经过上述简单的比较,不是所有的应用都能够在基于程序代码中实现读写分离,像一些大型的java应用,如果在程序代码中实现读写分离对代码的改动就较大,所以,像这种应用一般会考虑使用代理层来实现。

 

二、读写分离的搭建:

有关读写分离的搭建步骤,可以阅读这两篇博客:

https://blog.csdn.net/starlh35/article/details/78735510

https://blog.csdn.net/justdb/article/details/17331569

 


http://chatgpt.dhexx.cn/article/7yejOjIG.shtml

相关文章

Mysql 读写分离

一、介绍 1.什么是读写分离 读写分离的基本原理是将数据库读和写操作分散到不同的节点上。Mysql 的读写分离需要建立在主从复制基础之上,Master 数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而 Slave 数据库处理SE…

MySQL读写分离

目录 一、读写分离 1. 工作原理 2.为什么要读写分离 3.什么时候要读写分离 4.主从复制与读写分离 5.mysql支持的复制类型 二、MySQL 读写分离方式 1.基于程序代码内部实现 2.基于中间代理层实现 三、实验:读写分离(主从复制基础上&…

Mysql读写分离的四种方案

一、读写分离介绍 1、做读写分离的原因 数据库写入效率要低于读取效率,一般系统中数据读取频率高于写入频率,单个数据库实例在写入的时候会影响读取性能,这是做读写分离的原因。 2、MySQL读写分离的基础 实现方式主要基于mysql的主从复制&…

JMETER接口测试_用户登录(MD5加密)

JMETER接口测试—— 用户登录(密码MD5加密) 1)给整个线程组,添加全局变量 TestPlan–>线程组–>右键–>ADD Config Element -->User Defined Variables。 全局变量的意思:整个线程中,该变量设定的值,所有…

Jmeter接口测试之常用断言

在接口测试中,我们需要检查请求处理结果是否正确。当请求的响应状态码为200,是否表时接口功能正常呢?显然是不正确的。 响应状态为200,只能表明服务处理了你的请求,同时进行了结果返回;但并不能代表处理的…

jmeter接口测试传参问题汇总

1、 在Jmeter接口测试json传参时,number类型的参数不能为空,例如: {title: "测试标题",languageTypeId: ,content: "测试内容"}当这样数字类型传参为空时,jmeter就会报错如下: {&quo…

Jmeter接口测试之响应断言

一、断言是什么 1. 断言的作用 断言用于对采样器执行结果的检查,并在同一范围内的每个采样器之后进行处理。如果要对某个采样器进行断言,直接将断言添加到采样器的子集即可。 2. 为什么要用断言? JMeter以及Postman等接口测试工具&#xff…

用户认证授权---Jmeter接口测试

用户根据用户名,密码,验证码登录系统。要测试系统登录接口及查看用户所受权限,首先测试获取验证码接口,获取验证码,再测试登录接口,最后进行权限接口测试。 一、获取验证码 将返回信息中img通过data:image…

jmeter 接口测试快速入门

jmeter是一款小巧,轻便、开源的性能测试工具,它也可以很方便的进行接口测试。 下面我就带大家学习下jmeter接口测试。 目录 1.准备工作: 2.第一个接口测试走起! 3.再来一个稍微复杂一点的接口——获取短信验证码接口&#xf…

JMeter接口测试___参数化方法

一、JMeter添加参数的常用方法 1.Get请求 2.Post请求二、JMeter常用参数化的方式 1.用户参数(User Parameter) 2.用户自定的变量(User Defined Variables) 3.CSV数据文件设置(CSV Data Set C…

Jmeter 接口测试中的签名处理

签名机制:服务端接口为了防止非法请求,要求接口的入参需要传入一个签名字段sign,签名字段是按照一定的规则对接口的业务参数进行加密后得到的。在测试此类接口时,必须传入业务数据,和对应的签名数据,才能正…

jmeter接口测试教程以及接口测试流程详解

一、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过独…

jmeter接口测试教程

在日常工作中,尤其是做接口测试时,我们最经常用到的两个工具,就是Jmeter和postman。今天,我们主要是讲一讲Jmeter在接口测试这一块的一些方式方法。内容比较多,大家可以收藏一下,以后慢慢学。 1&#xff0…

JMeter接口测试及接口登陆压力测试

脚本: https://mp.csdn.net/mp_download/manage/download/UpDetailed 1.JMeter接口测试 查看别的博主内容时发现了个开放的API,可以作为练习使用 https://wanandroid.com/blog/show/2 jmeter基本操作 操作步骤 1.启动jmeter 2.在"测试计划&…

Jmeter接口测试-获取token

相信大家都知道在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数&#xf…

8、jmeter接口测试教程(简单案例)

以登录、查询接口为案例 注意: 1、如果找不到接口,可以通过F12进行抓包, 具体步骤如下: (1)选择任意浏览器(模式选择谷歌内核即可); (2)按F12键&a…

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以; Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk(最好是最…

全网最细节的jmeter接口测试教程以及接口测试流程详解

文章目录 一、Jmeter简介 二、Jmeter安装 三、设置Jmeter语言为中文环境 四、Jmeter主要元件 五、Jmeter元件的作用域和执行顺序 六、Jmeter进行接口测试流程 七、Jmeter进行接口测试流程步骤详解 八、Jmeter接口测试必定用到的扩展阅读 一、Jmeter简介 Jmeter是由Apa…

Jmeter接口测试——使用教程(上)

目录 前言 一、Jmeter简介 二、Jmeter-http接口脚本 Jmeter-http接口脚本添加header: Jmeter-http接口脚本添加cookie: 三、Jmeter-webservice脚本 四、Jmeter-参数化 1、Jmeter参数化的方式有三种 2、用户定义的变量 3、函数生成器 4、从文件…

如何使用jmeter进行接口测试?jmeter接口测试流程是怎样的

前言 我们学习自动化测试都会用到不同的工具,那么今天笔者呢,想给大家聊聊Jmeter接口测试流程详解,废话不多说直接进入正题。 一、jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以&am…