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、对比位点等方式,判断从数据库是否和主数据库一致。

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

    关注

    14

    文章

    10359

    浏览量

    91758
  • 数据库
    +关注

    关注

    7

    文章

    4083

    浏览量

    68541
  • MySQL
    +关注

    关注

    1

    文章

    931

    浏览量

    29751
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无刷电机驱动板的功能架构及其在功率变换与矢量控制的关键作用

    无刷电机驱动板的功能架构及其在功率变换与矢量控制的关键作用 摘要 无刷直流电机(BLDC)与永磁同步电机(PMSM)凭借高效率、高功率密度、长寿命优势,已全面替代刷电机与异步
    的头像 发表于 03-31 16:21 144次阅读

    工业数据台支持接入MySQL数据库吗

    工业数据台完全支持接入MySQL数据库 ,且通过数据同步、集成与治理等技术手段,能够充分发挥MySQL在数据存储与事务处理方面的优势,同时弥补其在数据分析与共享能力上的不足,具体分析如下: 技术
    的头像 发表于 12-04 11:23 509次阅读
    工业数据<b class='flag-5'>中</b>台支持接入<b class='flag-5'>MySQL</b>数据库吗

    医院随访管理系统源码,三级随访系统源码,Java+Springboot,Vue,Ant-Design+MySQL5

    Java版随访系统源码,医院随访管理系统源码,三级随访系统源码,B/S前后端分离架构,自主版权,落地案例。 技术框架:Java+Springboot,Vue,Ant-Design+MySQL5 开发
    的头像 发表于 11-08 14:48 729次阅读
    医院随访管理系统源码,三级随访系统源码,Java+Springboot,Vue,Ant-Design+<b class='flag-5'>MySQL</b>5

    pcb四层板为什么加很多的盲孔,什么作用

    pcb四层板为什么加很多的盲孔什么作用
    的头像 发表于 09-06 11:32 1349次阅读

    CentOS 7下MySQL 8双主热备高可用架构全解

    Centos7部署MySQL8+keepalived双主热备(含Keepalived配置与GTID同步优化方案) 架构拓扑原理 GTID同步 VIP 192.168.1.100 MySQL主节点1
    的头像 发表于 08-12 17:08 987次阅读

    MySQL的组成结构与结构化查询语言详解

    MySQL作为世界上最流行的开源关系型数据库管理系统,采用了分层架构设计
    的头像 发表于 07-14 11:21 783次阅读

    MySQL数据备份与恢复策略

    数据是企业的核心资产,MySQL作为主流的关系型数据库管理系统,其数据的安全性和可靠性至关重要。本文将深入探讨MySQL的数据备份策略、常用备份工具以及数据恢复的最佳实践,帮助运维工程师构建完善的数据保护体系。
    的头像 发表于 07-14 11:11 886次阅读

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系型数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL的企业级部署、优化、维护技能至关重要。本文将从实战角度出发,系统阐述MySQL在企业环
    的头像 发表于 07-09 09:50 891次阅读

    忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    探讨基于Docker部署的MySQL数据库在AI应用的关键作用。通过忆联PCIe5.0企业级SSD(UH812a)实测验证,展示了Namespace技术与QoS优化策略如何实现存储资源的精细化管理
    的头像 发表于 06-26 13:53 579次阅读
    忆联 Docker+<b class='flag-5'>MySQL</b> 流控方案:打造安全高效存储底座,释放 AI 极致性能

    东集RFID读写什么用

    在当今信息高度发达的时代,RFID(射频识别)技术正在逐渐改变我们周围的世界。随着物联网(IoT)的兴起,RFID读写器作为这一技术的核心组件,正在发挥着越来越重要的作用。东集小编将深入探讨RFID
    发表于 06-20 10:36

    介绍三种常见的MySQL高可用方案

    方案——MHA(MySQL High Availability Manager)、PXC(Percona XtraDB Cluster) 和 Galera Cluster。我们将从原理、架构、优势和局限性等角度对比这三种方案,并探讨它们在实际应用
    的头像 发表于 05-28 17:16 1438次阅读

    MySQL数据库采集网关是什么?什么功能?

    MySQL数据库采集网关是一种用于连接、采集、处理并传输数据到MySQL数据库的中间设备或软件系统,通常部署在数据源与MySQL数据库之间,作为数据交互的桥梁。它在工业物联网、智能楼宇、能源管理等
    的头像 发表于 05-26 15:20 818次阅读

    MySQL数据库是什么

    开发、企业应用和大数据场景。以下是其核心特性和应用场景的详细说明: 核心特性 关系型数据库模型 数据以 表(Table) 形式组织,表由行(记录)和列(字段)构成。 通过 主键、外键 实现表间关联,支持复杂查询和事务处理。 示例 :电商系统,用户表、订单表、商品表
    的头像 发表于 05-23 09:18 1450次阅读

    MySQL简介与理论基础

    MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于网站、应用程序和企业级系统。它采用客户端/服务器架构,支持多用户环境,并基于SQL(结构化查询语言)标准。
    的头像 发表于 05-21 10:43 921次阅读

    超级电容在故障指示器作用哪些?

    超级电容在故障指示器作用哪些?安装在输配电线路、电力电缆及开关柜进出线上的故障指示器在电流流通的线路起着非常重要的作用,一旦线路发生
    的头像 发表于 05-16 08:41 812次阅读
    超级电容在故障指示器<b class='flag-5'>中</b>的<b class='flag-5'>作用</b><b class='flag-5'>有</b>哪些?