Redis 主从复制

概念

Redis主从复制,参与复制的Redis实例分为主节点和从节点。以一主多从的模式建立分布系统,是redis搭建高可用集群的基础,为容错故障转移提供支持

配置

默认情况下,Redis都是主节点。

每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。

建立复制

配置从节点的方法

  1. 在配置文件中加入 slaveof {masterHost} {masterPort}
  2. 启动命令+参数, redis-server --slaveof {masterHost} {masterPort}
  3. 直接命令,slaveof {masterHost} {masterPort}

查看节点复制相关状态

info replication

断开复制

断开复制 slaveof no one,断开后从节点晋升为主节点

切主操作 slaveof {newMasterIP} {newMasterPort}

安全性

当主节点设置requirepass参数进行密码验证时,从节点需配置masterauth参数与主节点密码保持一致

只读

从节点使用slave-read-only=yes 配置为只读模式

传输延迟

主从节点部署在不同机器上,复制时的网络延迟就成为需要考虑的问题。

repl-disable-tcp-nodelay参数用于控制是否关闭tcp-delay

  • 当关闭时,主节点产生的命令数据无论大小都会及时发送给从节点,这样主从之间延迟会变小,但增加了网络带宽的消耗
  • 当开启时,主节点会合并较小的TCP数据包从而节省宽带。默认发送时间间隔取决于linux内核,一般默认为40毫秒。

原理

复制过程

  1. 保存主节点信息:保存地址信息,命令返回
  2. 建立连接,ping,权限验证
  3. 数据同步: 分为两种:全量复制、部分复制
  4. 命令持续复制:主节点持续将写入命令发送给从节点,保证主从一致性

数据同步

redis 同步有 2 个命令:

sync 和 psync,前者是 redis 2.8 之前的同步命令,后者是 redis 2.8 为了优化 sync 新设计的命令。我们会重点关注 2.8 的 psync 命令。

psync 命令需要 3 个组件支持:

  1. 主从节点各自复制偏移量
  2. 主节点复制积压缓冲区
  3. 主节点运行 ID

psync流程

repl

如果回复+FULLRESYNC, 那么从节点触发全量复制流程

如果回复+CONTINUE,从节点将触发部分复制流程

全量复制

1651711604850

部分复制

1651711420665

心跳

主节点默认每隔10秒对从节点发送ping命令

从节点在主线程中每隔1秒发送replconf ack {offset}, 给主节点上报自生当前复制偏移量

异步复制

写命令的发送过程是异步完成,也就是说主节点自身处理完写命令后直接返回给客户端,并不等待从节点复制完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值