顺德o2o网站建设,如何网络推广新产品,查询企业的软件,厦门 网站建设公司电话【Redis】Redis主从同步中数据同步原理 文章目录【Redis】Redis主从同步中数据同步原理1. 全量同步1.1 判断是否第一次数据同步2. 增量同步3. 优化Redis主从集群4. 总结1. 全量同步
主从第一次同步是全量同步。
数据同步包括以下三个阶段#xff1a; 在从节点执行slaveof命令…【Redis】Redis主从同步中数据同步原理 文章目录【Redis】Redis主从同步中数据同步原理1. 全量同步1.1 判断是否第一次数据同步2. 增量同步3. 优化Redis主从集群4. 总结1. 全量同步
主从第一次同步是全量同步。
数据同步包括以下三个阶段 在从节点执行slaveof命令后向主节点请求数据同步主节点判断从节点是否是第一次同步如果是第一次则返回主节点的数据版本信息从节点保存主节点的版本信息。从节点第一次同步主节点异步执行bgsave命令生成rdb文件生成完成向从节点发送从节点则清空本地数据去加载主节点的rdb文件实现一部分数据的同步。这时主节点和从节点之间的数据不一定是一致的。如果在主节点执行bgsave的时候主节点又执行了其他命令这些命令会记录在 repl_baklog 主节点发送其中的命令从节点执行接收到的命令这时就真正完成了主从数据的一致。
简述全量同步的流程
slave节点请求增量同步master节点判断replid发现不一致拒绝增量同步master将完整内存数据生成RDB发送RDB到slaveslave清空本地数据加载master的RDBmaster将RDB期间的命令记录在repl_baklog并持续将log中的命令发送给slaveslave执行接收到的命令保持与master之间的同步 1.1 判断是否第一次数据同步
master通过如下两个概念来判断slave是不是第一次来同步数据
Replication Id简称replid是数据集的标记id一致则说明是同一数据集。每一个master都有唯一的replidslave则会继承master结点的replid。offset偏移量•随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset说明slave数据落后于master需要更新。
所以slave做数据同步必须向master声明自己的 replication id 和 offset master才可以判断到底需要同步哪些数据。
如果slave节点来请求master必须带着自己的replid和offsetmaster节点则判断他们俩的replid是否相等相等则说明不是第一次来不相等说明是第一次来做全量同步并返回主节点的replid和offsetslave节点则继承这些信息。 2. 增量同步
主从第一次同步是全量同步但如果slave重启后同步则执行增量同步。 注repl_baklog是一个环形的数组。 repl_baklog的大小有限写满后会覆盖最早的数据。所以如果slave断开时间过久导致尚未被封的数据被覆盖则无法基于log做增量同步只能再次全量同步。 3. 优化Redis主从集群
在master中配置 repl-diskless-sync yes 启用无磁盘复制避免全量同步时的磁盘IO。Redis单节点上的内存占用不要太大减少RDB导致的过多磁盘IO。适当提高 repl_baklog 的大小发现slave宕机时尽快实现故障恢复尽可能避免全量同步。限制一个master上的slave节点数量如果实在是太多slave则可以采用主-从-从链式结构减少master压力。 4. 总结
简述全量同步和增量同步的区别
全量同步master将完整内存数据生成RDB发送RDB到slave后续命令则记录在repl_baklog逐个发送给slave。增量同步slave提交自己的offset到mastermaster获取repl_baklog中从offset之后的命令给slave。 什么时候执行全量同步
slave节点第一次连接master节点时slave节点断开时间太久repl_baklog中的offset已经被覆盖时 什么时候执行增量同步
slave节点断开又恢复并且在repl_baklog中能够找到offset时。