希望长大对我而言,是可以做更多想做的事,而不是被迫做更多不想做的事...... 首页 数据库主从不一致 丁D 学无止境 2019-03-28 13:15 3706已阅读 主从不一致 读写分离 摘要目前业界上最常使用的数据库集群架构是:一主多从,读写分离来提高读库的性能。但是这样又会出现主从数据不一致的情况。 #主从不一致 在**没缓存**的情况下 ![alt](/upload/820.png ) 1.当服务写完主库 2.有一个请求读取从库数据 3.主从同步完成 这时出现主从不一致(**写后立即读**) 处理方案 1.业务允许的情况,直接忽略 2.强制读主节点 3.选择性读主节点 有没有可能实现,只有这一段时间,可能读到从库脏数据的读请求读主,平时读从呢? 即在主从同步这段时间读取主节点,同步完成之后读取从节点 可以利用一个缓存记录必须读主的数据。 ![alt](/upload/555.png ) 如上图,当**写请求发生**时: (1)写主库 (2)将哪个库,哪个表,哪个主键三个信息拼装一个key设置到cache里,这条记录的超时时间,设置为“主从同步时延” (key的格式为“db_table_PK”) 当**读请求发生**时: 这是要读哪个库,哪个表,哪个主键的数据呢,也将这三个信息拼装一个key,到cache里去查询,如果, (1)cache里有这个key,说明1s内刚发生过写请求,数据库主从同步可能还没有完成,此时就应该去主库查询 (2)cache里没有这个key,说明最近没有发生过写请求,此时就可以去从库查询以此,保证读到的一定不是不一致的脏数据。 参考 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961330&idx=1&sn=4bdbada3b26d4fc2fc505f7a0f2ad7c4&chksm=bd2d022e8a5a8b38e59f0dfffba7ca407fe8711644b3794832572dd822c665205bb820cdddf7&scene=21#wechat_redirect 很赞哦! (2) 上一篇:缓存穿透,缓存雪崩,缓存击穿 下一篇:ansible初识 目录 点击排行 Elasticsearch6.3.2之x-pack redis哨兵 2019-07-09 22:05 Redis+Twemproxy+HAProxy+Keepalived 2019-07-12 17:20 GC优化策略和相关实践案例 2019-10-10 10:54 JVM垃圾回收器 2019-10-10 10:23 标签云 Java Spring MVC Mybatis Ansible Elasticsearch Redis Hive Docker Kubernetes RocketMQ Jenkins Nginx 友情链接 郑晓博客 佛布朗斯基 凉风有信 MarkHoo's Blog 冰洛博客 南实博客 Rui | 丁D Java研发工程师 生活可以用「没办法」三个字概括。但别人的没办法是「腿长,没办法」、「长得好看,没办法」、「有才华,没办法」。而你的没办法,是真的没办法。 请作者喝咖啡