Redis——主从复制
2018-07-15 本文已影响0人
黄金矿工00七
主从复制 :
主从复制示意图 主从复制总结- 主从复制实现:
- slaveof
- 配置文件:
slave ip port
- 复制方式
-
全量复制
全量复制- 全量复制开销:
bgsave时间
RDB文件网络传输时间
从节点清空数据时间
从节点加载RDB的时间
可能的AOF重写时间
- 全量复制开销:
-
部分复制
部分复制
部分复制的核心有三点:
-
master的复制偏移量(offset)
-
master的复制积压缓冲区 (固定长度FIFO队列,图中绿色)
-
服务器的runID
当过程4中偏移量之后的数据在缓冲区范围之内,会开始部分复制,若偏移量之后的数据已经不在缓冲区之内,将进行全量复制。
最后我们总结一下部分复制与全量复制:
如果服务器从没有复制过任何主服务器,或者执行过slaveof no one,name服务器将向主服务器发送psync?-1,主动请求全量复制;
如果服务器已经复制过主服务器,那么将发送psync runid offset 到主服务器(runid是上次复制时master的id,offset是当前节点的偏移量),主服务器将根据runid是否一致以及偏移量之后的数据是否在复制积压缓冲区内决定哪种行为,最后需要注意的是,在全量复制的过程6以及部分复制的过程6中,从服务器会以每秒一次的频率,与主服务器之间进行心跳检测
-
- 主从复制问题 :
- 读写分离(扩展读性能)
复制数据延迟;
脏读(slave节点无法删除过期数据);
从节点故障; - 主从配置不一致
maxmemory不一致:丢失数据 - 规避全量复制
第一次全量复制不可避免;
小主节点(maxmemory不要过大),低峰处理复制;
节点runID不匹配(主节点重启、故障转移哨兵或者集群)
复制积压缓冲区不足(网络中断,部分复制不可满足;增大复制缓冲区rel_backlog_size) - 规避复制风暴
-
单主节点复制风暴
主节点重启,多从节点复制(解决方法:更换复制拓扑)
图片.png -
单机器复制风暴
机器宕机后,大量全量复制
图片.png
-