0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MYSQL中读写分离有什么作用及基本架构说明

Wildesbeast 来源:今日头条 作者:会点代码的大叔 2020-02-05 14:40 次阅读

现在绝大部分软件项目,都会使用到关系型数据库,比如MySQL、Oracle、DB2等等,目前这些数据库的单机性能已经是不断优化和提高了,但是随着数据增长的速度和并发访问量的增加,在某些公司、某些场景下,单机数据库已经很难满足业务的需要了,所以必须考虑数据库集群的方式来提高系统的可用性;最常见的两种方法:

分库分表:把数据分散到不同的数据库上,每台数据库中存储的数据是不相同的(这里先不考虑每个库做备份或读写分离);分库分表既可以分散数据库访问的压力,也可以分散数据存储的压力;但是使用分库分表方案的时候,会带来扩容、事务、关联查询等问题和难点,具体这里就不展开讲了。

读写分离:将数据库读操作和写操作分散到不同的节点上,通常是一台数据库做写操作,1到N台做读操作;读写分离的架构,每一台数据中的数据是相同的(这里先忽略延迟的问题),所以只分散了数据库访问的压力,并没有分散数据存储的压力;我们这里主要讲一讲读写分离。

读写分离基本架构

MySQL读写分离的基本架构,可以参考下图:

如上图,读写分离实现的基本步骤是:

数据库服务器搭建多台,一主N从(N大于等于1);

主数据库只负责写操作,从数据库只负责读操作;

主数据库复制数据到从数据库上;

客户端写操作路由到主数据库上,读操作路由到从数据库上。

读写分离还有另外一种架构,就是在MySQL数据库和客户端之间,增加一层中间代理层,客户端只连接代理, 由代理根据请求类型,把请求分发到不同的数据库上:

第一种架构,整体架构比较简单直接,性能会稍微高一些,但是如果才用直连的方式,客户端可能会稍微麻烦一些(通常需要引入一些组件,负责管理数据库);

第二种架构,对客户端比较友好,因为客户端只需要和代理交互,并不用关注数据库的具体信息;但是因为多了一层代理,多多少少会对性能有一定的影响。

读写分离带来的好处

读写分离结构中,会有两台甚至更多台数据库,这种冗余的设计,可以提高数据的安全性和系统的可用性;就算是在分库分表的架构中,每一台子库,也可以一主多备的部署方式;

读写分离更多的时候使用在读操作远远大于写操作的场景下,这样可以保证写操作的数据库承受更小的压力,也可以缓解X锁和S锁争用;

服务器数量的增加,意味着可以有效地利用多台服务器的资源;读操作被分摊,提高了系统的性能;

如果写操作比读操作多,或者相近,可以采用双主相互复制的架构。

读写分离会带来的问题

之前的文章,我也反复强调过,任何的架构、软件、框架、组件...在解决一部分问题的时候,一定会带来其他的问题;读写分离最大的一个问题就是,数据从主复制到从的过程中,可能会存在延迟的,如果客户端在执行完一个读操作后,立刻从存库中查询的话,可能会读取到旧数据的情况(我们不断优化,也只能缩短这个时间,并不能完全消除掉这个时间)。

那么针对这个问题,有哪些处理方法呢?

根据具体场景进行评估,是否可以接收这个延迟(这好像是一句废话,但是大多数业务场景,是可以接收这点儿延迟的);

对于实时性要求很高的场景(查询的数据必须是最新的结果),将这些请求强制路由到主库上;

执行完写操作之后,在读操作发生之前,让中间的时间变长(也就是从业务操作角度来做一些控制,不一定操作完了立刻查询);

判断主备无延迟,可以通过判断seconds_behind_master参数、对比GTID、对比位点等方式,判断从数据库是否和主数据库一致。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9160

    浏览量

    85418
  • 数据库
    +关注

    关注

    7

    文章

    3799

    浏览量

    64389
  • MySQL
    +关注

    关注

    1

    文章

    809

    浏览量

    26566
收藏 人收藏

    评论

    相关推荐

    反射内存卡的系统架构

    反射内存卡的基本架构
    的头像 发表于 12-06 15:17 152次阅读

    MySQL编码机制原理

    前言 一位读者在本地部署 MySQL 测试环境时碰到一个问题,我觉得挺有代表性的,所以写篇文章介绍一下,看完相信你会对 MySQL 的编码机制最本质的了解,本文的目录结构如下 读者问题简介
    的头像 发表于 11-09 11:01 243次阅读

    适用于MySQL的dbForge架构比较

    dbForge Schema Compare for MySQL 是一种工具,用于轻松有效地比较和部署 MySQL 数据库结构和脚本文件夹差异。该工具提供了 MySQL 数据库架构中所
    的头像 发表于 10-28 09:41 210次阅读
    适用于<b class='flag-5'>MySQL</b>的dbForge<b class='flag-5'>架构</b>比较

    配置MySQL主从复制和读写分离

    配置MySQL主从复制和读写分离
    的头像 发表于 10-23 11:44 447次阅读
    配置<b class='flag-5'>MySQL</b>主从复制和<b class='flag-5'>读写</b><b class='flag-5'>分离</b>

    嵌入式Hypervisor:架构、原理与应用 阅读体验 +分离内核的嵌入式Hyperviso

    读后感:分离内核与SKH架构的深刻洞察 在阅读了关于分离内核和SKH(分离内核Hypervisor)的详细阐述后,我深感这一技术在现代计算机系统,尤其是嵌入式系统和安全关键系统
    的头像 发表于 10-12 17:06 322次阅读
    嵌入式Hypervisor:<b class='flag-5'>架构</b>、原理与应用 阅读体验 +<b class='flag-5'>分离</b>内核的嵌入式Hyperviso

    乒乓球架构LMX2820的高隔离、快速频率切换应用说明

    电子发烧友网站提供《乒乓球架构LMX2820的高隔离、快速频率切换应用说明.pdf》资料免费下载
    发表于 09-11 09:33 0次下载
    乒乓球<b class='flag-5'>架构</b><b class='flag-5'>中</b>LMX2820的高隔离、快速频率切换应用<b class='flag-5'>说明</b>

    SSD基本架构

    接口,常用的SATA、SAS和PCIe。 SSD控制器:负责主机到后端介质的读写访问和协议转换,表项管理、数据缓存及校验等,是SSD的核心部件。国科微星空企业级系列SSD采用自主研发的第四代12nm工艺NANDXtra控制器。 DRAM:FTL表项和数据的缓存,以提供数
    的头像 发表于 08-14 09:05 321次阅读

    MySQL知识点汇总

    大家好,这部分被称为DQL部分,是每个学习MySQL必须要学会的部分,下面就让我来介绍MySQL的其他部分。
    的头像 发表于 08-05 15:27 403次阅读
    <b class='flag-5'>MySQL</b>知识点汇总

    读写分离怎么保证数据同步

    读写分离是一种常见的数据库架构设计,用于提高数据库的并发处理能力。在读写分离架构
    的头像 发表于 07-12 09:49 1063次阅读

    读写分离解决什么问题

    读写分离是一种数据库架构设计策略,主要解决数据库在高并发场景下的读写性能瓶颈问题。在这种架构
    的头像 发表于 07-12 09:47 504次阅读

    MySQL的整体逻辑架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解
    的头像 发表于 04-30 11:14 453次阅读
    <b class='flag-5'>MySQL</b>的整体逻辑<b class='flag-5'>架构</b>

    labview 创建mysql 表时 设置时间 怎么在mysql是格式是date 而不是datetime?

    选择 时间日期 但是在mysql是date而不是datetime类型 ,除了sql语句创建表 ,怎么能实现创建表数据为datetime类型
    发表于 02-04 09:46

    ARM的编码方式与寻址方式何不同?

    ARM的编指方式与寻址方式何不同? ARM处理器是一种广泛应用的微处理器架构,被广泛用于移动设备、嵌入式设备以及智能家居等领域。在ARM架构
    的头像 发表于 01-29 18:10 690次阅读

    查询SQL在mysql内部是如何执行?

    我们知道在mySQL客户端,输入一条查询SQL,然后看到返回查询的结果。这条查询语句在 MySQL 内部到底是如何执行的呢?本文跟大家探讨一下哈,我们先来看下MySQL本架构~
    的头像 发表于 01-22 14:53 572次阅读
    查询SQL在<b class='flag-5'>mysql</b>内部是如何执行?

    热电分离铜基板与普通铜基板相比何优势?

    热电分离铜基板与普通铜基板相比何优势? 热电分离铜基板与普通铜基板相比,在许多方面都具有显着的优势。以下将详细介绍热电分离铜基板的优点,并向您解释其为何在许多应用中被广泛采用。 首先
    的头像 发表于 01-18 11:43 869次阅读