Redis (四) —— Redis主从复制

一、Redis应用需要考虑的内容

    1.性能

         redis 本身的QPS已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们需要有更多的Redis服务来分摊压力,实现负载均衡。

     2.可用性和安全性

          如果只有一个Redis服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另一个,如果硬件发生故障,而单机的数据无法恢复的话,带来的影响也是灾难性的。

     3.存储和扩展性

          因为Redis所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件(scale up)收效和成本比太低,所以我们需要有一种横向扩展的方法

二、主从复制

      一般情况下我们不会用Redis做读写分离,因为Redis的吞吐量已经够高了,做集群分片之后并发的问题更少,所以不需要考虑主从延迟的问题

     1.配置

       方式1:只需要在配置文件里面添加一行配置就可以了。 例如一主多从,192.168.44.33是主节点,在每个slave节点的redisconf配置文件增加一行 。

replicaof 192.168.44.33 6379

        方式二:启动服务时通过参数直接指定master节点:

./redis-server --slaveof 192.168.44.33 6379

        方式三:在客户端直接执行slaveof IP port,使该Redis实例(已运行的节点)成为从节点。

slaveof 192.168.44.186 6379

       通过info命令,可查看主从信息 

  2.基本特性

         1) Redis配置完主从,从节点启动之后,就会自动连接到master节点,开始同步数据。

         2)如果master节点变了,比如原来的master宕机,选举出了新的master,这个配置会被重写。

         3)一个从节点也可以是其他节点的主节点,形成级联复制的关系。

         4)从节点是只读的,不能执行写操作。

         5)  Redis的主从复制分为两类,一种叫全量复制,就是一个节点第一次连接到 master节点需要全部的数据。第二种叫做增量复制,比如之前已经连接到master节点,但是中间网络断开,或者slave节点宕机了,缺了一部分的数据。

  3.关闭主从复制

       修改配置文件去除 replicaof,或直接执行命令  slaveof no one

4.主从复制流程

          1) slave节点启动时(或者执行slaveof命令时),会在自己本地保存master节点的信息,包括master node的host和ip

          2)slave节点内部有个定时任务 replicationCron,每隔1秒钟检查是否有新的master node要连接和复制

          3) 如果发现有master节点,就跟master节点建立连接。如果连接成功,从节点就为连接建立一个专门处理复制工作的文件事件处理器,负责后续的复制工作。为了让主节点感知到slave节点的存活,slave节点定时会给主节点发送ping请求。

         4)如果是新加入的slave节点,那就需要全量复制。master通过bgsave命令在本地生成一份RDB快照,将RDB快照文件发给slave节点(如果超时会重连,可以调大repl-timeout的值)。

         5)如果slave节点自己本来有数据,slave节点首先清除自己的旧数据,然后用RDB文件加载数据

         6)如果master节点生成RDB期间,接收到的写命令,开始生成RDB文件时,master会把所有新的写命令缓存在内存中。在 slave 节点保存了RDB之后,再将新的写命令复制给 slave节点

         7)第一次全量同步完了,主从已经保持一致了,后面 master node 持续把写命令,异步复制给slave node

         8)若从节点有一段时间断开了与主节点的连接,slave 通过 master_repl_offset记录的偏移量,进行增量复制就可以了。查看偏移量命令:info replication

5.无盘复制

     为了降低主节点磁盘开销,从2.8.18版本开始,Redis支持无盘复制,master生成的RDB文件不保存到磁盘而是直接通过网络发送给从节点。无盘复制适用于主节点所在机器磁盘性能较差但网络宽带较充裕的场景。

repl-diskless-sync=no

6.主从复制存在的问题

   1.在一主一从或者一主多从的情况下,如果主服务器挂了,对外提供的服务就不可用了,单点问题没有得到解决。

   2.如果每次都是手动把之前的从服务器切换成主服务器,然后再把剩余节点设置为它的从节点,这个比较费时费力,还会造成一定时间的服务不可用。

 

    

  

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值