主库更新后,读从库之前先 sleep 一下。

具体的方案就是,类似于执行一条 select sleep(1) 命令。这个方案的假设是,大多数情况下主备延迟在 1 秒之内,做一个 sleep 可以有很大概率拿到最新的数据

这个方案给你的第一感觉,很可能是不靠谱儿,应该不会有人用吧?并且,你还可能会说,直接在发起查询时先执行一条 sleep 语句,用户体验很不友好啊。

但,这个思路确实可以在一定程度上解决问题。

为了看起来更靠谱儿,我们可以换一种方式。以卖家发布商品为例,商品发布后,用 Ajax(Asynchronous JavaScript + XML,异步 JavaScript 和 XML)直接把客户端输入的内容作为“新的商品”显示在页面上,而不是真正地去数据库做查询。

这样,卖家就可以通过这个显示,来确认产品已经发布成功了。等到卖家再刷新页面,去查看商品的时候,其实已经过了一段时间,也就达到了 sleep 的目的,进而也就解决了过期读的问题。

也就是说,这个 sleep 方案确实解决了类似场景下的过期读问题。但,从严格意义上来说,这个方案存在的问题就是不精确。这个不精确包含了两层意思:

如果这个查询请求本来 0.5 秒就可以在从库上拿到正确结果,也会等 1 秒;
如果延迟超过 1 秒,还是会出现过期读。

看到这里,你是不是有一种“你是不是在逗我”的感觉,这个改进方案虽然可以解决类似 Ajax 场景下的过期读问题,但还是怎么看都不靠谱儿。别着急,接下来我就和你介绍一些更准确的方案。

总结

  • 取巧

Sleep 方案解决主备延迟相关推荐

  1. 什么原因可能导致主备延迟?

    主备延迟最直接的表现是,备库消费中转日志(relay log)的速度,比主库生产 binlog 的速度要慢. 备库所在机器的性能要比主库所在的机器性能差.这种部署现在比较少了.因为主备可能发生切换,备 ...

  2. 《MySQL——主备切换流程与主备延迟》

    目录 主备切换 主备延迟的原因 可靠性优先策略的主备切换流程 可用性优先策略的主备切换流程 主备切换 主备切换分为主动运维与被动操作. 软件升级.主库所在机器按计划下线为主动运维. 主库所在机器掉电为 ...

  3. Mysql主备延迟的来源

    首先,有些部署条件下,备库所在机器的性能要比主库所在的机器性能差. 一般情况下,有人这么部署时的想法是,反正备库没有请求,所以可以用差一点儿的机器.或者,他们会把 20 个主库放在 4 台机器上,而把 ...

  4. 京东一面:MySQL 主备延迟有哪些坑?主备切换策略

    大家好,我是Tom哥 作为一名开发同学,大家对 MySQL 一定不陌生,像常见的 事务特性.隔离级别 .索引等也都是老生常谈. 今天,我们就来聊个深度话题,关于 MySQL 的 高可用 一.什么是高可 ...

  5. Mysql主备延迟的原因

    1.备库所在的机器性能比主库所在的机器相差很多 解决办法:换机器 2.备库压力大 解决办法:一主多从 3.大事务,新增的的binlog文件过大,在备库中执行时间过长 解决办法:避免大事务,一次性删除大 ...

  6. mysql主备方案_Mysql 主备双库方案

    一.简介 1.我们为什么要用主从复制? 主从复制目的:可以做数据库的实时备份,保证数据的完整性: 可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能. 原理图 1.png 从上图可以看 ...

  7. mysql 主备及时_MySQL高可用(二)主备延时如何解决?

    从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步. 今天我们来学习一下主备同步里的一个重点的问题:主备延时. 主备延时,简单来 ...

  8. 《MySQL实战45讲》实践篇 24-29 学习笔记 (主备篇)

    图片来自于极客时间,如有版权问题,请联系我删除. 24 | MySQL是怎么保证主备一致的? 主备切换流程如下: 建议把节点 B(也就是备库)设置成只读(readonly)模式. 1.有时候一些运营类 ...

  9. 美团面试官:MySQL主备、主从、读写分离你知道多少?

    一.MySQL主备的基本原理 在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行.这样可以保持节点B和A的数据是相同的.当需要切换的时候,就切成状态2. ...

最新文章

  1. 自然语言处理领域重要研究及资源全索引!
  2. Java执行字符串中的运算公式
  3. 网站关键词密度对SEO优化的重要性
  4. MICRA OPENCART 自适应主题模板 ABC-0678-02
  5. PHP下kafka的实践(已经测试)
  6. 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例
  7. Ticker View
  8. HBase phoenix二级索引
  9. java exec 关闭_如何正确关闭java ExecutorService
  10. SpringCloud面试题分享
  11. JAVA里面==和euqals的区别
  12. MySQL 到底能不能放到 Docker 里跑? 1
  13. 基于大数据技术推荐系统算法案例实战教程
  14. 向weka 中添加DBSCAN算法
  15. 支付宝即时到账在线语音音效生成器html源码
  16. 不用linux转录组数据分析,玩转RNA-seq数据也可以不需要linux ?
  17. butter滤波器是iir吗_学习随笔之IIR滤波器与FIR滤波器
  18. 面试:第十二章:所有总结
  19. linux下播放蓝光iso,如何播放蓝光原盘ISO文件?
  20. 自考本计算机软件基础ppt,计算机软件基础自考本科

热门文章

  1. 人生的四大天规,越早明白,越有福气
  2. 最积阴德的4件事,哪怕做过一件,也会累积大功德!
  3. Android Studio如何允许访问网络资源
  4. linux 7升级win10双系统,安装 Windows 10 + Centos 7 双系统共存
  5. int 转换成 string 四种方法你们喜欢用那种呢?
  6. oracle如何设置权限,Oracle创建用户并设置权限
  7. html5中加入视频格式,HTML5音视频格式video和audio
  8. macos复制粘贴快捷键 快速_探究Mac OS十大键盘快捷键
  9. 意见反馈接口php,用PHP制作的意见反馈表源码
  10. 模型房推荐_艺术生意大利留学,关于费用开销和专业推荐,这些详情要看