Redis包含master和slave两种节点:master节点对外提供读写服务,slave节点作为master的数据备份,从主节点全量同步数据,主从复制架构下,默认Slave是只读的,如果写入则会报错,但可以通过设置slave-read-only参数为no改为可写。
主从复制是由slave主动触发,流程如下:
1.首先slave向master发起sync命令,发起后,master被动的将新进的slave节点加入到自己的主备复制集群。
2.master收到sync后,开启bgsave操作。
3.bgsave完成后,master将快照信息发送给slave.
4.发送期间,master收到的来自用户客户单的新的写命令,除了正常的响应之外,都再存入一份到backlog队列中。
5.快照信息发送完成后,master继续发送backlog队列信息。
6.backlog发送完成后,后续的写操作同时发给slave来保持实时的异步复制。
slave端处理逻辑如下:
slave发送完sync后,继续对外提供服务。
开始接收master的快照信息,同时,将slave现有数据清空,并将master快照写入自身内存。
接收backlog内容并执行,期间对外提供读请求。
继续接收后续来自master的命令副本并继续回放,以保持数据和master一致。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。