Redis---(master 主从复制 slave)---超详细配图文字版

目录

1. 概述

2. 主从部署作用

3. 部署

4. 原理

4.1. 精简版

4.2. 详细版


 

 

  • 如果有很多从节点,为了缓解主从复制风暴(多个从节点同时复制主节点导致主节点压力过大)
  • 可以做如下架构,让部分从点与从节点(与主节点同步)同步数据

 

 

1. 概述

  主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

2. 主从部署作用

  • 数据冗余: 主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复: 当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡: 在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 高可用基石: 除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

3. 部署

配从不配主

主节点不需要做任何改变,从节点都需要修改配置加上主节点信息,配置完成后,可以再主库检查从节点信息

  • 修改从节点的 redis.conf
1. 将相关配置修改为如下值:
port 6379
pidfile /var/run/redis_6379.pid  # 把pid进程号写入pidfile配置的文件
logfile "6380.log"  # 日志输出
dir /usr/local/redis-7.0.0/MyRedis/data/  # 指定数据存放目录
# 需要注释掉bind
# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)

3、配置主从复制
replicaof 192.168.211.166 6379   # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replica-read-only yes  # 配置从节点只读
  • 在主节点输入下面命令查看 主从信息
127.0.0.1:6379>  info replication

4. 原理

4.1. 精简版

 

  • 全量复制:Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份slave接收到数据文件后,存盘,并加载到内存中;(步骤1234)
  • 增量复制:Slave初始化后,开始正常工作时主服务器发生的写操作同步到从服务器的过程;(步骤56)

4.2. 详细版

  1. 全量复制
    1. 如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个 psync 命令给master请求复制数据。
    2. master收到 psync 命令后,会在后台进行数据持久化通过bgsave生成最新的 rdb 快照文件
    3. 当master与slave之间的连接由于某些原因而断开时,slave能够自动重Master,如果master收到了多个 slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送 给多个并发连接的slave。
    4. 然后,master再将之前缓存在内存中的命令发送给slave。
    5. 当持久化进行完 毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然再加载到内存中。
    6. 持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。

 


增量复制

  1. 当master和slave断开重连后,一般都会对整份数据进行复制。但从redis2.8版本开始,redis改用可以支持部分数据复制的命令 psync 去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。
  2. master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master 继续进行未完成的复制,从所记录的数据下标开始。如果master进程id变化了,或者从节点数据下标 offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值