redis缓存架构-03-redis下的replication以及master+slave
Posted YL10000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis缓存架构-03-redis下的replication以及master+slave相关的知识,希望对你有一定的参考价值。
1.master和slave的读写分离(水平扩容支持读高并发)
2.master主从复制流程
master开始复制给slave前的认证流程
master向slave复制流程
2.1 无磁盘化复制配置
repl-diskless-sync yes #开启无磁盘化复制
repl-diskless-sync-delay 5 #等待一定时间,看是否有其他的slave进行连接,然后进行复制
2.2 断点续传
master和slave节点会创建一个backlog,用来存储replica offset和master id,如果断网后重新连接,slave会让master从上次的replica offset开始继续复制,但是如果没有找到对应的offset,就会进行一次全量复制。
slave会每秒上报自己的offset给master,master也会保存每个slave的offset。
2.3 过期key的处理
slave不会过期key,只会等待master过期key。
如果master过期了key,或者通过LRU淘汰了key,那么master会模拟发送一条del命令给slave。
2.4 建议必须开启master的持久化,不能采用slave的备份数据作为master的数据热备
1)可能在master宕机时还没有数据,一旦重启,会将所有的slave数据清空
2.5 master run id
可以通过 info server,查看master的run id
slave会根据run id 定位master,如果run id 发生了变化,就会进行全量复制。
redis 每次重启都会改变run id ,可以通过redis-cli debug reload命令来限制run id的修改。
2.6 全量复制
1)master将生成的rdb发送给slave,如果复制时间超过了60s,那么slave就会认为复制失败。可以通过调节repl-timeout 60这个参数进行调整
2)client-output-buffer-limit slave 256MB 64MB 60 #在复制过程中,如果内存缓冲区持续60秒超过64MB,或者瞬间超过256MB,那么就停止复制,复制失败。
以上是关于redis缓存架构-03-redis下的replication以及master+slave的主要内容,如果未能解决你的问题,请参考以下文章