《Redis开发与运维》笔记-复制

配置

建立复制

建立复制有三种方式:

  1. 在配置文件中加入配置,跟随Redis启动生效
slaveof <masterip> <masterport>
  1. 在redis-server启动命令后加入 “–slaveof masterip masterport”。
redis-server --slaveof 127.0.0.1 6379
  1. 在客户端直接使用命令,slaveof masterip masterport
slaveof 127.0.0.1 6379

断开复制

直接执行命令断开复制,slaveof no one

slaveof no one

Redis可以直接通过slaveof命令切换主节点
Redis在切换主节点过程中,会先清理删除本地旧数据,在进行复制操作。

安全性

一般在设置Redis配置中,我们会通过设置requirepass参数进行密码验证。所以在从节点复制主节点就需要配置参数masterauth来配置主节点密码。
在复制过程中,一般需要配置从节点为只读属性,防止修改从节点数据导致主从节点数据不一致,通过设置参数slave-read-only

slave-read-only yes

传输延迟

复制过程中,会存在网络延迟等问题。Redis提供了一个配置可以设置进行优化

//默认下此配置为关闭
repl-disable-tcp-nodelay no

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

原理

复制过程

复制过程

数据同步

数据同步过程分为全量同步和部分同步两种方式。通过使用psync命令操作同步。

psync runId offset

psync命令运行需要组件支持:

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

主节点运行id每次启动都会变更,可以采用 debug reload命令执行重启,不会变更run_id

psync命令运行流程
psync命令流程

参数offset是当前从节点保存的复制偏移量,如果是第一次参数复制,则默认值是-1
如果主节点回复 +FULLRESYNC 那么从节点将触发全量复制
如果主节点回复 +CONTINUE,从节点触发部分复制
如果主节点回复 -ERR 说明主节点不识别psync命令。可能是主节点版本过低。

全量复制

全量复制流程图:
全量复制流程

部分复制

部分复制流程图:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Layne_lei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值