前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库读写分离的应用场景和存在问题

MySQL数据库读写分离的应用场景和存在问题

作者头像
飞狗
发布2020-03-20 12:21:52
1.4K0
发布2020-03-20 12:21:52
举报
文章被收录于专栏:专注于主流技术和业务

为什么要读写分离

在应用的用户访问量比较低的时候,一个数据库的读写能力是完全能够胜任的。但是在用户访问量增大的时候,数据库I/O就会成为瓶颈,解决数据库I/O瓶颈可以有两种方式:

  • 增加数据库缓存,如memche、Redis,数据库的读写先操作缓存,然后再持久化到数据库;
  • 数据库主从备份,进行读写分离; 通过对用户访问的数据分析,一定是读数据库的量要远远大于写数据库的量,这时读就成为瓶颈,而读写的可靠性级别也是不一样的,写的可靠性要求会更高,针对读写的不同的要求,进行数据库的读写分离。

如何实现主从同步

读写分离,主从同步
读写分离,主从同步

半同步复制:主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。 并发复制:指的是从库开启多个线程,并行读取relay log中不同库的日志,然后并行重放不同库的日志。

读写分离存在哪些问题及解决方法

由于主从同步是异步的,存在不一致的情况,因此会产生一些问题。

问题1

用户注册成功后,需要进行登录操作,注册是写 操作,登录是读操作,如果此时从库还没有用户的注册信息,那么用户登录会失败。 解决方法: 这个问题可以在业务层进行处理,注册成功之后,马上登录的,访问主库; 这个问题也可以在访问从库失败之后,访问主库进行验证;

问题2

用户修改密码成功后,需要进行登录操作,修改是写 操作,登录是读操作,如果此时从库还没有更新用户的信息,那么用户登录会失败。 解决方法:

缓存方案
缓存方案

此时从库的数据没有更新,如果用户登录会出现失败。可以在业务逻辑层进行处理,当用户密码修改后,在缓存中新增一条Id记录,记录用户的最新信息,并设置过期时间,每次请求的时候,先从缓存读取信息,如果没有在缓存读到,则到从库读取。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要读写分离
  • 如何实现主从同步
  • 读写分离存在哪些问题及解决方法
    • 问题1
      • 问题2
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档