如果master还没有同步到slave业务读取脏数据问题

问题阐述:master用来写,slave用来读,当master还没有同步到slave这时候我们读slave出现了脏数据

解决方案:在redis缓存中增加标记

.A发起写请求,更新了主库,但在缓存中设置一个标记,代表此数据已经更新,标记格式(业务代号:数据库:表:主键ID)根据自己业务场景。
2.设置此标记,要加上过期时间,可以为预估的主库和从库同步延迟的时间.
3.B发起读请求的时候,先判断此请求的业务在缓存中有没有更新标记
4.如果存在标记,走主库;如果没有走从库。

下面是redis自身的丢失问题(系统级)

1、异步复制导致数据丢失:因为master -> slave的复制是异步的,当master还没有把数据复制到slave的时候宕机了,此时这些部分数据就丢失了

2、脑裂导致数据丢失:master犹豫某种原因失去网络连接了,这时候哨兵会检测出当前主从没有master了就会在slave中找到一个设置成master,这时候原来的master还没有死,就出现了两个master,然后第一个master网络有好用了,在这个期间不断地向新的master写入数据,然后哨兵检测到老的master还活着,会将新的master再次编程slave,然后重新进行主从复制,这时候会造成数据丢失。

解决方案

如何解决异步复制:配置两个属性

min-slaves-to-write 1
min-slaves-max-lag 10

要求至少有1个slave,数据复制和同步的延迟不能超过10秒

如果说一旦所有的slave,数据复制和同步的延迟都超过了10秒钟,那么这个时候,master就不会再接收任何请求了

(1)减少异步复制的数据丢失

有了min-slaves-max-lag这个配置,就可以确保说,一旦slave复制数据和ack延时太长,就认为可能master宕机后损失的数据太多了,那么就拒绝写请求,这样可以把master宕机时由于部分数据未同步到slave导致的数据丢失降低的可控范围内

(2)减少脑裂的数据丢失

如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求

这样脑裂后的旧master就不会接受client的新数据,也就避免了数据丢失

redis主从数据丢失解决方案相关推荐

  1. Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方

    Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方案 >>>>>>>>>>>>>> ...

  2. Windows Redis 重启数据丢失解决方案

    1. 修改配置 : redis.windows.conf 文件 找到appendonly no 改为 appendonly yes 找到appendfsync 设置为 appendfsync ever ...

  3. Windows Redis 重启数据丢失解决方案,Windows重启后Redis数据丢失解决方案

    1.修改配置 : redis.windows.conf 文件 找到appendonly no 改为 appendonly yes 找到appendfsync 设置为 appendfsync every ...

  4. Redis主从数据不一致及读取过期数据问题的解决方案

    主从数据不一致问题 因为主从库间的命令复制是异步进行的,所以有可能客户端从从库中读取到的值和主库中的最新值并不一致. 具体来说,在主从库命令传播阶段,主库收到新的写命令后,会发送给从库.但是,主库并不 ...

  5. 这可能是史上最全 Redis 高可用解决方案总结

    转载自  这可能是史上最全 Redis 高可用解决方案总结 本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 ...

  6. Redis数据存储解决方案

    http://www.tuicool.com/articles/77nUZn 1.背景 1.1 Redis简介 官方网站: http://redis.io/ ,Redis是REmote DIction ...

  7. redis主从,哨兵回忆手册

    redis主从 持久化的开启与主从集群是否生效无关系 Slave Server同样是以非阻塞的方式完成数据同步.在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据(注意初次同步则会阻 ...

  8. Redis 主从配置和参数详解

    安装redis 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz解压redis tar -xvf redis-3.0. ...

  9. Redis 主从集群搭建及哨兵模式配置

    Redis 主从集群搭建及哨兵模式配置 最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 ...

最新文章

  1. GitBucket管理员添加人员
  2. 【Tensorflow】更新后报错 numpy.core.umath
  3. 微信年终奖人均280万?腾讯张军:不可能 醒一醒吧!
  4. Google 已将“xxxx”标记为恶意扩展程序并阻止安装,解决方案
  5. iOS codeview
  6. RSA加密解密及RSA加签验签
  7. VsCode 配置java环境(详细教程)
  8. 手把手教你opencv做人脸识别(附源码+文档)
  9. java遍历map集合_Java中遍历Map集合方式
  10. Docker 从入门到实战视频教程(15 个视频)
  11. shell 脚本实战 四
  12. 如何在网页中插入视频
  13. 数据结构与算法——19. 散列函数设计方法
  14. sql developer使用技巧,快捷键
  15. shouldoverrideurlloading为什么有时候不走_心理学:为什么很多看似不般配的人,往往都能走到最后?...
  16. 转载:廖雪峰经典:史上最浅显易懂的Git教程!
  17. mysql是应用软件还是系统软件_数据库管理系统属于系统软件还是应用软件
  18. VL817以及迭代型号VL817S原理图规格书示例
  19. 概念:微分方程的解、瞬态响应、稳态响应、自由响应、强迫响应、零输入响应、零状态响应
  20. LINUX命令全称英语

热门文章

  1. 纯Css3画出的凯蒂猫
  2. 适合计算机社团活动的游戏,趣味室内团建活动小游戏 适合团建活动的小游戏...
  3. BZOJ4739 : 定向越野
  4. System Design [youtube搬运] Tinder 笔记
  5. 岗位热招 | 微软企业商用事业部喊你加入啦~
  6. 普通原因与特殊原因的区别
  7. JavaScript 通过exceljs前端导出并下载excel
  8. vue点击按钮返回上一页
  9. 服务器SMTP邮件设置
  10. k8s学习(九) 使用metrics-server 进行hpa扩容