美文网首页
redis的复制

redis的复制

作者: lionel880 | 来源:发表于2019-12-18 10:38 被阅读0次

redis的复制包含什么:同步(sync)和命令传播(command propagate)

  • 同步:指的是从机初次连接或者宕机后重连进行同步追上主服务器的过程
  • 命令传播:正常工作状态下,为了主从一直,主将执行的命令传播给从的过程

一、同步

  • 旧版的复制同步的问题
    sync


    image.png

    旧版的问题在哪,从机初次复制没有问题,但当断线后重连也要从头同步一次,而sync,因为主要执行bgsave,发送rdb文件等,会占用很大的cpu,内存,I/O资源。短线重连可能只有一小部分的数据没有更新,却要执行负担那么重的命令是很不划算的

  • 新版同步 psync
    p是什么,partial sync

psync有2中模式,完整重同步和部分重同步。
1.full resynchronization 用于初次同步复制,执行sync命令。
2.partial resynchronzation 处理断线后重连复制,在条件符合时,主服务器将主从连接断开期间的写命令发送给从服务器


image.png

partial resynchronzation功能构成
1.主服务器的复制偏移量(replication offset)和从的复制偏移量
2.主服务器的复制积压缓存区(replication backlog)
3.服务器的运行ID

复制偏移量

image.png

主服务器当发送后,偏移量就增加,从服务器接收到之后,就更新偏移量。当主从偏移量不一致时,代表主从服务器不一致。这时,主就要去补偿从丢失的那部分数据,至于如何补偿,则和复制挤压缓冲区有关

复制缓冲区
当主进行命令传播时,不仅会将写命令发送给所有的从服务器,还会将写命令积压到复制缓冲区里面
这时一个FIFO的队列,默认大小1MB

image.png

缓冲区里有偏移量和内容,当从连接上主之后,从会发送从的复制偏移量给主。主检查缓冲区,如果偏移量在缓冲区内,则选择部分复制,否则,全量复制

tip缓冲区大小的合理设置,可以通过secondwrite_size_per_second,每秒写入时间来估算,看平均断线后,多久会连接上。估算后修改repl-backlog-size

id
每个服务器启动时,都会生成40位随机数字id,当主连接上从后,主会把id发给从,从保留主机的id,这样,当重连后,从将自己保留原来的主id发给新的主,新的主就可以比较主是否是原来的主机,如果不是 ,肯定是需要进行全量重同步。
最终肯定是主服务器通过判断,决定执行哪种同步的

image.png

二、命令传播

当完成同步后,主从服务器进入命令传播阶段。这样主服务将写命令传播给从服务器即可

命令传播里有一个心跳检测是需要注意的
心跳检测,会包含3个内容

  • 1.检测网络连接,我们在redis里执行info命令可以看到复制情况,里面包含state,offset,lag
    代表了从的复制偏移量,延迟了几秒。默认redis每秒心跳检测一次,因此正常情况下lag为0或1
  • 2.辅助min-slaves配置选项
    如果你的从宕机了,你觉得你的高可用或安全性受到影响,可以配置这个选项
    min-slave-to-write 3
    min-slaves-max-lag 10
    意味着至少要有3个从,且3个从的lag不能都大于10s,不然主会拒绝写入
  • 3.检测命令丢失
    因为心跳检测的时候,从会发当前的offset,所以主可以比对出之前发的命令是否有丢失的情况,如果丢失,则补发

相关文章

  • Redis主从复制

    Redis主从复制 一.主从复制介绍 1.Redis复制功能介绍 1)Redis 使用异步复制。从 Redis2....

  • redis主从复制和sentinel

    redis 主从复制 一. 复制 Redis 的复制(replication)功能允许用户根据一个 Redis服务...

  • redis-cluster 集群搭建方案

    下载redis 源码包,编译安装redis 修改redis 参数 复制几个不同的redis 服务节点 修改复制的服...

  • Redis|主从复制与哨兵机制

    1. Redis主从复制 1.1 Redis主从复制 Redis主从复制主要有两个角色,主机(master)对外提...

  • Redis的复制(Master | Slave)

    Redis的复制(Master | Slave) 1.Redis复制简介 行话:也就是我们所说的主从复制,主机数据...

  • Redis复制

    1、redis复制是什么? redis复制,也就是我们所说的主从复制(master/slaver机制)。根据配置和...

  • 【Redis学习笔记】13 Redis 主从复制

    1. Redis 主从复制特性 2. Redis 主从复制流程 3. Redis 主从复制操作 IP地址端口角色1...

  • redis(二)

    Redis用户认证 禁用危险命令 主从复制的过程 主从复制的部署 哨兵 Redis哨兵+主从+密码 Redis哨兵...

  • k3s operator 方式 安装 redis 无中心集群

    redis有单机,复制,分片这几种方式 复制就是把一个redis的数据,复制到另外一个redis, 分片就是把ke...

  • redis设计与实现-复制

    复制 redis主从集群使用复制功能实现,复制有如下特性 redis 2.8以前的复制功能不能高效地处理断线后重复...

网友评论

      本文标题:redis的复制

      本文链接:https://www.haomeiwen.com/subject/dexsnctx.html