MySQL主从延迟,导致刚刚更新的数据读取错误,但是业务逻辑上更新数据和读取数据目前是必须紧跟操作的,如何破?

发布于 2022-09-02 09:17:44 字数 216 浏览 14 评论 0

1.现在业务逻辑上是先将一条数据更新状态为2,然后统计状态为2的数据。由于MySQL主从延迟,导致数据有时准确,有时不准确
2.更新数据和统计数据在逻辑上是一起的,无法分开。比如我刚存了钱,数据表字段状态改为2。那么我现在需要立即sum一下,用户总共的钱数,保证用户总钱数的正确。
3.有什么解决方案?逻辑上有什么好的想法可以分开吗?既保证sum正确,又保证当时状态下用户的中钱数?
4.拜托各位大神

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

一直在等你来 2022-09-09 09:17:45

直接读取主库呗

千笙结 2022-09-09 09:17:45

建议先描述你要实现的需求是什么;
然后你是怎么实现的;
最后是遇到的是什么问题。

我不在是我 2022-09-09 09:17:45

主从延迟,数据有时间戳吗,从机上时间戳超过主从延迟的数据才能确保是一致的,不一定是最新的,意义不大。主从延迟只是做灾备,万一数据员手贱,把数据删了,那么可以从延迟从机中恢复。

国产ˉ祖宗 2022-09-09 09:17:45

1.你要解决的首先是为什么会主从延时,根据楼主的描述来看,你的数据库主从经常延时,那么是否主从服务器性能有问题?是否从库数据库服务器硬件性能跟不上主库的写入,如果是这样的话,最简单的方法是提升下从库配置

2.你的数据库是否有多个库同时使用,这样会导致从库同步多个库,如果是,可以考虑分离来降低从库同步压力

3.mysql数据库主从模式有 [ 半同步模式 ],会确保主库的binlog传输到从库之后才返回给客户端数据,保证主从数据的一致性,不过这样的话对主库性能有一定消耗

4.mysql从库可以进行 [ 并行同步 ],也就是多线程同步,mysql版本需要>=5.6,5.6的库是基于库并行同步,5.7基于事务并行同步

亚希 2022-09-09 09:17:44

我总结的几点办法:

  1. 如上所述,增加缓冲,或者采用多住多从的数据库形式,但这个无法根本上解决此类问题。因为主从延迟的问题不可能消灭。

  2. 如上所述,直接读主库。

  3. 这个主要是业务逻辑问题,

    1. 技术上可以采用乐观锁的方式解决。

    2. 可以给数据库加事务、回滚。

    3. 数据冗余方式,不采用每天更新数据再统计更新后的数据方式,直接给user添加balance字段,每次更新这个字段即可,配合乐观锁和事务,完美解决。

    4. 用户数据一多,sum的性能问题会越来越突出

  4. 不当之处还请大神指教

向地狱狂奔 2022-09-09 09:17:44

先更新到数据库,后更新缓存。
读的时候,先读缓存,缓存没有,再读数据库

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文