
主从复制原理


全量复制
slaveof命令后,节点B会与节点A建立一个TCP连接,然后发送
psync ${runid} ${offset}命令,告知节点A需要开始同步数据。
runid:每个 Redis 实例启动时都会自动生成的一个随机 ID,用来唯一标记这个实例
offset:偏移量,slave需要从哪个位置开始同步数据

runid,所以 Slave 节点会发送
psync ? -1,表示需要全量同步数据。
psync后,会给slave回复
+fullresync ${runid} ${offset},这个
runid就是master的唯一标识,slave会记录这个
runid,用于后续断线重连同步请求。

增量复制

psync ${runid} ${offset},Master 收到
psync命令之后,检查slave发来的
runid与自身的
runid一致,如果一致,说明之前已经同步过数据,这次只需要同步部分数据即可。
+continue,表示这次只同步部分数据。之后 Master 节点把复制缓冲区
offset之后的数据给 Slave 节点,接下来 Slave 节点执行这些命令后就与 Master 数据一致了。

无盘复制
文章转载自Java程序鱼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




