redis主从不一致

发布时间:2018-11-20 18:27:29 阅读:1064次

https://www.jianshu.com/p/7874fa810079

http://www.yongganfei.com/article.aspx?id=91

Redis复制延时
Redis从库写入数据
Redis从库内存使用达到maxmemory限制
Redis主库过期键清理过慢
Redis从库读取到已过期的”死键“
Redis主从Rename规则不一样,导致命令丢失

实例基础信息:

redis版本:redis-cli 3.2.5
架构:传统主从架构

背景

给一台运行一段时间的redis主库增加一台从库,增加后发现以下异常:

  • 主库查看主从复制偏移量基本相同,能确定主从基本是同步的
    master_repl_offset - slave1:ip.offset = 2351604050 - 2351602973 = 1077 byte
  • 但是从库查看key的数量和主库少几万个
    主从总key数量差距 = 599178 - 563705 = 35473
    主从过期key数量差距 = 581619 - 546248 = 35371

主库截图


image.png

从库截图


image.png

通过key数量这两个差值大概可以定位到问题出现在过期key

原理解剖

  • redis的过期key在到期的时候不会自动删除,一般通过惰性删除(访问该key的时候判断过期,过期就删除,否则不删除)和定期删除(定期迭代删除一定量的key),这种策略就会导致主库存在一定量的过期key
  • 新的从库slave host port同步主库时,主库会bgsave一个快照文件,在进行bgsave的时候对于已经过期的key不会保存到该文件,文件保存完后发送给slave,slave载入数据文件,这是后从库是没有这些过期的key值的,所以出现了主从key的数量不一致
  • 通过主库执行scan 0 count xxx多次迭代所有的key,将所有的过期key进行删除,这时候发现主从的key数量趋于一致

主库截图


image.png

从库截图



如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:redis主从不一致 出自老鄢博客 | 欢迎分享