Redis主从模式中,数据如何同步

一.全量同步

     主从第一次建立连接时,会执行全量同步,将master节点所有数据同步给slave节点

有几个概念

Replication Id:简称replid,是数据集的标识,id一致说明是同一个数据集。每个master都有唯一的replid,slave会继承master节点的replid。

offset:偏移量,slave完成同步后会记录当前同步的offset,如果slave的offset小于master的offset,说明slave的数据落后master,此时就需要进行同步

repl_baklog:一个文件记录Redis处理过的命令日志及offset,包括master当前的offset,和slave已经拷贝到的offset,slave与master的offset之间的差异,就是salve需要增量拷贝的数据了。

流程:

1.slave请求同步,发送replid和offset到master

2.master判断replid与自己是否一致,不一致,拒绝增量同步

3.master生成RDB文件,发送给slave

4.slave清空本地数据,加载RDB

5.master将RDB期间的命令记录在repl_baklog,并持续将log中的命令发送给slave

补充:master判断一个节点是否是第一次同步的依据,就是看replid是否一致。

二.增量同步

       全量同步需要先做RDB,然后将RDB文件通过网络传输个slave,成本太高了。因此除了第一次做全量同步,其它大多数时候slave与master都是做增量同步

流程:

1.slave请求同步,发送replid和offset到master

2.master判断replid和自己的一致,执行增量同步

3.master去repl_baklog中获取offset之后的数据,发送给slave

4.slave执行同步

三 .结论

全量同步和增量同步区别?

  • 全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。

  • 增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave

什么时候执行全量同步?

  • slave节点第一次连接master节点时

什么时候执行增量同步?

  • slave节点断开又恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值