背景:
一个历史比较悠久的服务出现了主从延迟。即写库写入n秒后,从库才能读到正确的数据。
主从延迟产生的原因:
当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围。
slave的大型query语句产生了锁等待。
主从延迟的解决方案
短期解决方案(治标)
优化 MySQL 配置。
提高 MySQL 到5.6版本以上。(5.6后支持多线程,提高了效率)。
增加从库,减少单从库的压力。(对原因2有效)
将时延要求高的场景,读写库。
长期解决方案(治本)
优化耗时SQL,优化索引。
写入主库的时候,确保数据都同步到从库了之后才返回这条数据写入成功,当然如果有多个从库,你也必须确保每个从库都写入成功。显然,这个方案对性能和时间的消耗是极大的,不推荐。
引入Redis或者其他NoSQL数据库,查的时候先查Redis,等从库数据库都同步完成,再清除Redis
预估吞吐量上限,采取缓存、限流、降级等方法,来应对大量流量。
版权声明:本文内容来自简书>作者 : 齐舞647,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
原文链接:https://www.jianshu.com/p/04c8c4f62cd5
如有涉及到侵权,将立即予以删除处理。
在此特别鸣谢:简书博主>齐舞647的创作。
此篇文章所有版权归原作者所有,与本公众号无关,商业转载请联系作者获得授权,非商业转载请注明出处。