美文网首页
(四)Redis主从原理与搭建

(四)Redis主从原理与搭建

作者: awaa | 来源:发表于2020-01-17 11:05 被阅读0次

    主从模式的概念:

    主从模式就是N个redis实例,可以是1主N从,也可以N主N从(N主N从则不是严格意义上的主从模式了,后续的集群模式会说到,N主N从就是N+N个redis实例。)

    主从模式的一个作用是备份数据,这样当一个节点损坏(指不可恢复的硬件损坏)时,数据因为有备份,可以方便恢复。
      
    另一个作用是负载均衡,所有客户端都访问一个节点肯定会影响Redis工作效率,有了主从以后,查询操作就可以通过查询从节点来完成

    redis主从需要了解的概念

    1. 一个Master可以有多个Slaves,可以是1主N从。

    2. 默认配置下,master节点可以进行读和写,slave节点只能进行读操作,写操作被禁止(readonly)。

    3. 不要修改配置让slave节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当master节点修改同一条数据后,slave节点的数据会被覆盖掉。

    4. slave节点挂了不影响其他slave节点的读和master节点的读和写,重新启动后会将数据从master节点同步过来。

    5. master节点挂了以后,不影响slave节点的读,Redis将不再提供写服务,master节点启动后Redis将重新对外提供写服务。

    6. 特别说明:该种模式下,master节点挂了以后,slave不会竞选成为master。哨兵模式(Sentinel)下会进行master的竞选,后续我们再尝试

    主从模式的搭建

    1. 启动一个节点,把它当做master节点(port:7001)
    2. 配置slave节点(port:7000)有两种方法
    • 我们可以直接在配置文件中加入配置

    slaveof 192.168.3.67 7001

    然后启动就可以了

    • redis-cli 进入操作界面后

    192.168.3.67:7000> slaveof 192.168.3.67 7001
    OK Already connected to specified master

    测试主从节点

    master节点上的信息

    192.168.3.67:7001> info Replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=192.168.3.67,port=7000,state=online,offset=2379,lag=0
    master_replid:ed564db30c302becd3995539e7ce9b30ad5d5af6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2379
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:2379
    

    slave几点上的信息

    192.168.3.67:7000> info Replication
    # Replication
    role:slave
    master_host:192.168.3.67
    master_port:7001
    master_link_status:up
    master_last_io_seconds_ago:7
    master_sync_in_progress:0
    slave_repl_offset:2337
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:ed564db30c302becd3995539e7ce9b30ad5d5af6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2337
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:2337
    

    在master上set key-value
    然后在从节点get

    192.168.3.67:7001> set test hello
    OK
    
    192.168.3.67:7000> get test
    "hello"
    

    从节点只读,写的话会报错

    192.168.3.67:7000> set test nihao
    (error) READONLY You can't write against a read only replica.
    

    断开主从关系

    通过slaveof <masterip> <masterport>命令建立主从复制关系以后,可以通过slaveof no one断开。需要注意的是,从节点断开复制后,不会删除已有的数据,只是不再接受主节点新的数据变化。

    从节点执行slaveof no one后,打印日志如下所示;可以看出断开复制后,从节点又变回为主节点

    参考文章

    相关文章

      网友评论

          本文标题:(四)Redis主从原理与搭建

          本文链接:https://www.haomeiwen.com/subject/yhlqzctx.html