Redis——主从复制

主从复制 :

主从复制示意图
主从复制总结
  • 主从复制实现:
    1. slaveof
    2. 配置文件:
      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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天中午和陈小曦聊天,我问到那你有没有觉得休息不过来?上一次在文章里也提到自己身体的感觉,累,不仅仅是累。4月17...
    Livenhere阅读 1,547评论 0 0
  • 我所经历的一切 是一把逆行的匕首 裂帛一样的心跳 打开一帧帧回眸 草芥也向阳 苦难成诗 我用脚步留住远方 踏响光亮...
    笔语新晴阅读 1,742评论 0 5
  • Link_xx阅读 1,826评论 0 0