【redis教程】13、redis的主从复制

互联网的三高架构(高并发、高性能、高可用)。下面说一下高可用,比如说一年之中服务器宕机了1天,那么高可用就是(365-1)/ 365= 99.73%,注意单位要一致,一般到秒一级。业界可用性目标5个9,即99.999%,服务器年宕机时长低于315秒,约5.25分钟。

单机redis的风险与问题

  • 机器故障,数据丢失
  • 容量瓶颈,内存不足

为了避免单机redis服务器故障,准备多台机器,同步保存多个副本,实现redis的高可用,同时实现数据冗余备份。

一、什么是主从复制

主从复制即将master机器中的数据即时有效的复制到slave机器中,一个master可以拥有多个slave,一个slave只对应一个master。
master 写数据,将数据变化自动同步到slave中
slave 读数据,禁止写

二、主从复制的三个阶段

主从复制有三个阶段,第一阶段是slave连接master,连上以后就是第二阶段即把数据同步给slave,最后是反复同步,反复同步是后期收到的数据不停的发送给slave,这一阶段叫命令传播阶段。
在这里插入图片描述

2.1 建立连接(阶段一)

快速体验主从复制

slave连接master的方式有多种

  • 方式一,发送命令 slaveof master_ip master_port
  • 方式二,启动时使用参数--slaveof master_ip master_port
  • 方式三,服务器配置 slaveof master_ip master_port

下面我使用方式三即配置文件的方式来建立slave与master之间的连接。这里我使用6380端口的redis来作为slave服务器,
3680的配置文件内容:

port 6380
daemonize yes
logfile "redis-6380.log"
dir /an-dev/redis-4.0.14/data
slaveof 127.0.0.1 6379

6379端口的redis作为master。
在这里插入图片描述
登录master客户端,看到master有数据,
在这里插入图片描述
现在登录slave客户端,看到数据复制了过来,
在这里插入图片描述
授权访问
在这里插入图片描述

2.2 数据同步(阶段二)

在这里插入图片描述
数据同步阶段注意事项

  • 如果master数据量巨大,注意避开流量高峰期
  • 复制缓冲区的大小设置要合理,太小了会导致数据溢出,部分复制(增量复制)的时候发现存在丢失情况,必须进行第二次全量复制,可能致使slave陷入死循环状态。

2.3 命令传播(阶段三)

在这里插入图片描述

三、主从复制的心跳机制

进入命令传播阶段的时候,master与slave之间要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线。

  • master心跳
    指令:PING
    周期:由repl-ping-slave-period决定,默认10秒
    作用:判断slave是否在线
    查询:INFO replication 获取slave最后一次连接间隔
  • slave心跳任务
    指令:REPLCONF ACK {offset}
    周期:1秒
    作用1:汇报slave自己的复制偏移量,获取最新的数据变更指令
    作用2:判断master是否在线

当slave多数掉线,或者延迟过高,master为保障数据稳定性,将拒绝所有信息同步操作。

min-slaves-to-write 2
min-slaves-max-lag 8

slave数量少于2个,或者所有slave延迟都大于8秒时,强制关闭master写功能,停止数据同步。

发布了28 篇原创文章 · 获赞 1 · 访问量 1850

猜你喜欢

转载自blog.csdn.net/m0_46130323/article/details/104338549