精华内容
下载资源
问答
  • 14.Redis集群主从复制原理

    千次阅读 2019-08-13 18:32:05
    Redis3.0版本之前只支持单节点运行模式,在3.0版本及以后才支持集群。 虽然Redis有持久化功能,能够保障redis服务器宕机也能恢复并且只有少量数据丢失(不建议使用redis来做持久化的处理),但是由于所有数据在一...

           Redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。Redis3.0版本之前只支持单节点运行模式,在3.0版本及以后才支持集群。

           虽然Redis有持久化功能,能够保障redis服务器宕机也能恢复并且只有少量数据丢失(不建议使用redis来做持久化的处理),但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就算是有备份也仍然不可避免数据丢失的问题。

           在实际生产环境中,我们不可能使用一台redis服务器来作为我们的缓存服务器,所以为了避免单点故障问题,必须要使用多台服务器来实现Redis集群。[如需了解Redis集群安装,请移步:Redis-5.0.3集群安装]

    主从复制(数据同步)

           主从复制,可以实现当一台Redis服务器的数据更新后,自动将新的数据同步到集群中的其他服务器上,从而保证数据一致,主要用来解决Redis集群多节点之间数据的同步问题。

           Redis集群的出现,能够解决①单点故障的问题的同时,也能够实现②读写分离的操作(master负责写,slave负责读)

    原理

           Redis的主从复制可以确保Redis集群的master和slave之间的数据同步。主从复制可以分为①全量复制②增量复制,在Redis2.8版本之后,引入了③无磁盘复制。本文将对这三种复制进行简单的理解。

     1.全量复制

            Redis的全量复制,一般发生在slave节点初始化阶段。这时候slave节点需要将master节点上的所有数据都复制一份,详细步骤如下图所示。(基于RDB快照方式)

            完成上图步骤,即完成了slave节点数据初始化的所有操作,slave节点此时便可以接受来自用户的读请求操作。Redis集群中的master/slave的复制策略采用的是乐观复制,也就是说可以容忍在一定时间内master/slave数据的内容是不同的,但是两者的数据都会最终同步一致的。

           为什么在一段时间内master/slave数据的内容是不同的呢?因为Redis的主从复制同步过程是异步操作的,即:master执行完客户端请求命令后,会立即将结果返回给客户端,然后再异步将命令同步给slave,从而导致master/slave节点在短时间内的数据不一致性。切记:Redis遵循的是弱一致性原则

           为什么要采用异步操作呢?因为Redis是基于内存的一个非关系型数据库,性能是非常快的,如果使用同步操作,可能会对Redis的性能有所影响,所以此处使用异步操作,可以保证Redis集群的性能不受影响。

           你可能有疑惑,如果在数据不一致期间,master/slave节点因为网络问题等导致连接断开,而这个时候,master是无法得知某个写命令是否最终同步给了多少个slave节点。此时Redis提供了一个配置项来限制master是否可写,即:只有master数据至少同步给多少个slave节点时,master节点才是可写的。我们可以在redis.conf配置文件中查看。zhi

    //表示只有当3个或以上的slave连接到master,master才是可写的
    min-slaves-to-write 3   
    
    //表示允许slave最长失去连接的时间,如果10秒还没有收到slave的响应,则master认为该slave已断开
    min-slaves-max-lag 10  

    2.增量复制

           Redis2.8版本开始,支持主从复制的断点续传,如果主从复制过程中,网络连接断开了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制。详细步骤如下图所示。

           master节点会在内存中创建一个backlog,master和slave会保存一个replica offset,还有一个master replid,offset就是保存在backlog中。如果master和slave网络连接断开了,slave会让master从上次的replica offset处开始复制。如果没有找到对应的offset,那么变会执行全量复制操作。(如下图所示,为一主已从,我们能够发现offset,backlog,master_replid等都是相同的,说明已经同步完成)

        

    3.无磁盘复制

           Redis的全量复制,是基于RDB方式的持久化实现的,也就是master节点在后台保存RDB快照,slave节点接收到rdb文件,然后载入,完成复制操作。但是这种方式也会存在如下一些问题:

           ①当master节点禁用RDB方式,如果执行复制初始化操作,Redis依然会生成RDB快照,当master节点下次启动时,执行该rdb文件的恢复,因为复制发生的时间点不确定,导致恢复的数据的时间点也不确定,可能是任何时间点的,从而导致数据出现问题;

           ②当磁盘性能差,复制是存在性能过慢等问题,那么初始化复制过程,便会对性能产生比较大的影响。

           基于以上问题,Redis在2.8.18以后的版本,引入了无硬盘复制这一选项,可以在不需要磁盘中的rdb文件去同步,直接在内存中创建一个rdb文件,直接发送数据至slave节点。在redis.conf配置文件中,通过以下配置来开启该功能:

    //开启无硬盘复制,默认为no 不开启
    repl-diskless-sync yes

    至此,Redis集群主从复制,数据一致性原理讲解完毕

    END 

    展开全文
  • Redis集群 主从复制

    2018-09-28 16:17:33
    Redis集群   主从复制 工作原理:从节点服务启动连接主节点,从节点发送一个sync命令,主节点收到命令后启动后台存盘进程,收集所有的操作命令,收集完之后将整个...# Redis集群 -主从复制模式 # 配置主节...

    Redis集群

     

    主从复制

    工作原理:从节点服务启动连接主节点,从节点发送一个sync命令,主节点收到命令后启动后台存盘进程,收集所有的操作命令,收集完之后将整个数据库文件发送给从节点。来完成一次同步。从节点收到数据库文件之后存盘加载到内存。

    此后,主节点继续收集命令依次发送给从节点,从节点再依次执行这些命令,从而达到数据同步。

     

    # Redis集群 -主从复制模式

    # 配置主节点的配置文件不需要任何改动

    # 配置从节点只需要在配置文件中slaveof <masterip> <masterport>  

    # 如果设置了密码,就要设置:masterauth <master-password> 即可

     

     登录客户端 输入info Replication 命令 查询配置信息

     

    展开全文
  • Redis集群主从复制

    2017-11-13 11:16:20
    Redis主从复制之配置介绍 复制的原理介绍 slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,mast

    Redis主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,这样就可以减轻服务器的压力了。

    Redis主从复制之配置介绍

    复制的原理介绍

    slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步

    1. 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
    2. 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

    但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

    case 1:一主N从

    (在这里我只使用了一台Linux机器,但是通过配置同样可以达到Redis集群的需求,如果有多个服务器,配置是一样的)

    首先从拷贝3个redis.conf文件(拷贝两个也是可以的,这里我是为了区分Master/Slave)


    2:主机配置介绍

    主机6379配置 

    3:从机配置介绍


         设置从机的slaveof ,6380,6381都配置


    分别启动redis  


    查看redis info信息


    测试:



    展开全文
  • Redis主从复制原理

    2019-04-03 18:12:06
    1. 前言 Redis是一个高性能的K-V内存数据库。对于Redis来说,当访问读请求的并发量增加的时候,Redis主服务器会成为一个性能瓶颈。为了分担读压力,Redis支持主从复制,Redis的...当Slave机器连接到Redis集群中时,...

    1. 前言

    Redis是一个高性能的K-V内存数据库。对于Redis来说,当访问读请求的并发量增加的时候,Redis主服务器会成为一个性能瓶颈。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

    2. Redis主从复制

    在这里插入图片描述

    2.1 全量复制

    当Slave机器连接到Redis集群中时,Slave机器需要进行初始化。这个时候需要进行全量复制。具体步骤如下:

    1. 从服务器连接主服务器,发送SYNC命令;
    2. 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
    3. 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
    4. 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
    5. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
    6. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

    在这里插入图片描述

    完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。

    3. Redis增量同步

    Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。 增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

    4. Redis主从同步策略

    主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

    4.1 Redis主从同步策略存在的问题

    如果多个Slave断线了,需要重启的时候,因为只要Slave启动,就会发送sync请求和主机全量同步,当多个同时出现的时候,可能会导致Master IO剧增宕机。

    Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝。需要清除Redis主从复制的几点重要内容

    1. Redis使用异步复制。但从Redis 2.8开始,从服务器会周期性的应答从复制流中处理的数据量。
    2. 一个主服务器可以有多个从服务器。
    3. 从服务器也可以接受其他从服务器的连接。除了多个从服务器连接到一个主服务器之外,多个从服务器也可以连接到一个从服务器上,形成一个图状结构。
    4. Redis主从复制不阻塞主服务器端。也就是说当若干个从服务器在进行初始同步时,主服务器仍然可以处理请求。
    5. 主从复制也不阻塞从服务器端。当从服务器进行初始同步时,它使用旧版本的数据来应对查询请求,假设你在redis.conf配置文件是这么配置的。否则的话,你可以配置当复制流关闭时让从服务器给客户端返回一个错误。但是,当初始同步完成后,需要删除旧的数据集和加载新的数据集,在这个短暂的时间内,从服务器会阻塞连接进来的请求。
    6. 主从复制可以用来增强扩展性,使用多个从服务器来处理只读的请求(比如,繁重的排序操作可以放到从服务器去做),也可以简单的用来做数据冗余。
    7. 使用主从复制可以为主服务器免除把数据写入磁盘的消耗:在主服务器的redis.conf文件中配置“避免保存”(注释掉所有“保存“命令),然后连接一个配置为“进行保存”的从服务器即可。但是这个配置要确保主服务器不会自动重启(要获得更多信息请阅读下一段)
    展开全文
  • redis主从复制原理

    2021-03-05 08:58:39
    文章目录引子复制两种使用方式主从复制原理保存主节点信息:主从建立socket连接发送ping命令:权限验证同步数据命令持续复制全量复制与增量复制:全量同步过程:部分复制:心跳检测机制 引子 在分布式系统中为了解决...
  • Redis集群-主从复制 主从模式(master-slave) 可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一台服务器,这种工作模式我们称为主从模式。其中被复制的服务器为主服务器(master...
  • Redis主从复制原理以及实现 前言: 上一个博客讲到Redis的数据持久化,如果说Redis节点宕机了,那么我们的系统就无法对数据在redis进行缓存处理,这个可以通过Redis的哨兵模式或者集群模式解决,本篇博客先从Redis...
  • 文章目录Redis主从复制、哨兵模式、集群)概述及部署一、Redis主从复制1、概念2、作用3、Redis主从复制的流程4、搭建Redis 主从复制二、Redis 哨兵模式1、原理2、作用3、搭建Redis哨兵模式4、故障模拟5、验证结果...
  • 二、主从复制复制原理及手动配置主机 1、一主二从配置 2、使用规则 一、Redis集群环境搭建 1、概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者...
  • Redis主从复制一、什么是主从复制二、主从复制的作用三、Redis集群搭建四、主从服务器宕机问题1、主机宕机2、从机宕机五、主从复制原理1、全量复制2、增量复制 一、什么是主从复制 主从复制是将一台Redis服务器的...
  • Redis 有三种集群模式,第一个就是主从模式,第二种“哨兵”模式,第三种是Cluster...Redis 主从复制原理 Redis 主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.1.128 6379 主要是通过 ma...
  • Redis主从复制 什么的主从复制 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,slave以读为主 能干什么? 读写分离,性能扩展 容灾快速恢复(比如某个从机挂掉之后,能...
  • redis主从复制配置

    2019-10-05 19:31:27
    Redis主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:1.master可以有多个slave2.除了多个...
  • redis集群方案介绍及主从架构搭建以及主从复制原理 每天多学一点点~ 话不多说,这就开始吧… 文章目录redis集群方案介绍及主从架构搭建以及主从复制原理1.前言2.Redis集群方案比较3.Redis伪主从搭建(1主2从)4.Redis...
  • 简介 REmote DIctionary Server(Redis),远程字典服务器。是一个key-value存储系统。类似于memcached,将数据完全存储于内存中,不过和memcached不同的是,...主从复制原理当启动主从复制时候,主节点将自己内存中
  • redis主从复制原理

    2016-12-20 09:55:47
    Redis主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点: 1.master可以有多个slave 2.除了...
  • Redis:主从复制

    2019-06-29 09:37:15
    前言 在Redis的持久化中曾提到,Redis高可用的方案包括持久化、主从复制...这篇文章中,将详细介绍Redis主从复制的方方面面,包括:如何使用主从复制主从复制原理(重点是全量复制和部分复制、以及心跳机制)、...
  • 7、redis主从复制

    2020-11-09 14:46:32
    本文介绍一下redis主从复制配置和原理,学好本章对之后建立redis的哨兵模式和redis集群,将会产生很大帮助。
  • 目录一、redis集群类型二、主从复制2.1、主从复制概念2.2、工作原理2.3、主从复制启用2.4、主从复制优缺点2.4.1、优点2.4.2、缺点三、redis-cluster集群部署3.1、环境说明3.2、部署过程 一、redis集群类型 redis...
  • 主从架构2.1 配置2.2 原理3. 哨兵架构3.1 配置3.2 原理3. 集群架构3.1 配置3.2 原理3.3 分区方案3.4 slot迁移3.5 failover3.6 优化手段4. 节点间的通信4.1 端口4.2 协议4.3 消息4.4 数据结构5. 淘汰机制 1. 单机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 630
精华内容 252
关键字:

redis集群主从复制原理

redis 订阅