redis主从数据丢失解决方案
如果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主从数据丢失解决方案相关推荐
- Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方
Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方案 >>>>>>>>>>>>>> ...
- Windows Redis 重启数据丢失解决方案
1. 修改配置 : redis.windows.conf 文件 找到appendonly no 改为 appendonly yes 找到appendfsync 设置为 appendfsync ever ...
- Windows Redis 重启数据丢失解决方案,Windows重启后Redis数据丢失解决方案
1.修改配置 : redis.windows.conf 文件 找到appendonly no 改为 appendonly yes 找到appendfsync 设置为 appendfsync every ...
- Redis主从数据不一致及读取过期数据问题的解决方案
主从数据不一致问题 因为主从库间的命令复制是异步进行的,所以有可能客户端从从库中读取到的值和主库中的最新值并不一致. 具体来说,在主从库命令传播阶段,主库收到新的写命令后,会发送给从库.但是,主库并不 ...
- 这可能是史上最全 Redis 高可用解决方案总结
转载自 这可能是史上最全 Redis 高可用解决方案总结 本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 ...
- Redis数据存储解决方案
http://www.tuicool.com/articles/77nUZn 1.背景 1.1 Redis简介 官方网站: http://redis.io/ ,Redis是REmote DIction ...
- redis主从,哨兵回忆手册
redis主从 持久化的开启与主从集群是否生效无关系 Slave Server同样是以非阻塞的方式完成数据同步.在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据(注意初次同步则会阻 ...
- Redis 主从配置和参数详解
安装redis 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz解压redis tar -xvf redis-3.0. ...
- Redis 主从集群搭建及哨兵模式配置
Redis 主从集群搭建及哨兵模式配置 最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 ...
最新文章
- GitBucket管理员添加人员
- 【Tensorflow】更新后报错 numpy.core.umath
- 微信年终奖人均280万?腾讯张军:不可能 醒一醒吧!
- Google 已将“xxxx”标记为恶意扩展程序并阻止安装,解决方案
- iOS codeview
- RSA加密解密及RSA加签验签
- VsCode 配置java环境(详细教程)
- 手把手教你opencv做人脸识别(附源码+文档)
- java遍历map集合_Java中遍历Map集合方式
- Docker 从入门到实战视频教程(15 个视频)
- shell 脚本实战 四
- 如何在网页中插入视频
- 数据结构与算法——19. 散列函数设计方法
- sql developer使用技巧,快捷键
- shouldoverrideurlloading为什么有时候不走_心理学:为什么很多看似不般配的人,往往都能走到最后?...
- 转载:廖雪峰经典:史上最浅显易懂的Git教程!
- mysql是应用软件还是系统软件_数据库管理系统属于系统软件还是应用软件
- VL817以及迭代型号VL817S原理图规格书示例
- 概念:微分方程的解、瞬态响应、稳态响应、自由响应、强迫响应、零输入响应、零状态响应
- LINUX命令全称英语