Redis集群搭建及主从复制

主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。主机以写为主,从机以读为主,从而实现主从复制、读写分离。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

redis最大使用内存不应该超过20G。

Redis集群搭建及主从复制_第1张图片

主从复制的作用

主从复制的作用主要包括:

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

如何使用主从复制

为了更直观的理解主从复制,在介绍其内部原理之前,先说明我们需要如何操作才能开启主从复制。

 

查看当前主机信息

Redis集群搭建及主从复制_第2张图片

搭建redis集群

复制配置文件

Redis集群搭建及主从复制_第3张图片

修改配置文件

复制三个配置文件,修改对应的配置信息

  1. 修改端口
  2. pid进程文件名称
  3. log日志文件名称
  4. dump.rdb文件名称

修改完成之后,启动redis三个服务,通过进程信息查看,启动成功:

Redis集群搭建及主从复制_第4张图片

默认情况下,每台Redis服务器都是主机,主从复制一般只配置从机 ;

建立从机

需要注意,主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情。

从节点开启主从复制,有3种方式:

(1)、配置文件

在从服务器的配置文件中加入:slaveof

(2)、启动命令

redis-server启动命令后加入 --slaveof

(3)、客户端命令

Redis服务器启动后,直接通过客户端执行命令:slaveof ,则该Redis实例成为从节点。 

上述3种方式是等效的,下面以客户端命令的方式为例,看一下当执行了slaveof后,Redis主节点和从节点的变化。

细节概述

  • redis主从复制使用命令搭建,重启就会消失;采用配置文件配置,长久生效;
  • redis主机可以写,从机不可以写,只能读;主机中所有的信息都会自动同步到从机中; 
  • 当主机断开连接,从机依旧可以读取到数据,但是没有写的操作了;如果主机突然恢复了,从机依旧可以获取到主机写进去的数据
  • 如果使用命令行来配置主从,这个时候如果重启了,从机就会变成主机;如果变为从机,立马就会从主机中获取到信息;

主从复制原理

Slave启动成功后连接到master后发送一个sync同步命令 

Master就收到命令,启动后台的存盘进程,同时收集所有接受到的用于修改数据集命令,在后台进程执行完毕后,Master讲传送整个数据文件集到Slave,并完成一次完全同步

全量复制:slave服务在接受到数据库文件数据后,将其存盘并加到内存中;

增量复制:Master继续讲新的所有收集到的修改命令一次传给Slave,完成同步;

但是只要重新连接Master,一次完全同步(全量复制)讲自动执行;我们数据一定可以在从机中看到

Redis集群搭建及主从复制_第5张图片

以上配置就是一主二从实现主从复制、读写分离;但是如果主机宕机或者掉了,那么redis就没有写的操作了;

给予以上情况的解决方案:

Redis集群搭建及主从复制_第6张图片

此时的MasterOrSalve依旧是从机,依旧无法执行写的操作;当主机宕机或者掉了的时候才充当主机

当主机宕机或者掉了之后,MasterOrSalve依旧是从机,想让它充当主机需要手动配置;

如果主机恢复了,当时MasterOrSalve依旧是主机,这个时候就需要重新配置了;

你可能感兴趣的:(redis,redis)