九、Redis主从复制

概念

  1. 主从复制只能由主节点复制到从节点的单向复制。

  2. 主节点以写为主,从节点以读为主。

  3. 默认情况下所有的redis节点都是主节点,主从模式需要配置。

  4. 环境配置。只需配置从节点,不需要配置主节点。默认配置就是主节点。

    127.0.0.1:6379> info replication
    # Replication
    role:master				#默认主节点
    connected_slaves:0		#从机为0
    master_replid:0dc7fba9a3df5f508d9f4721b386b860330bc6c3
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    127.0.0.1:6379> 
    
    

场景模拟

  1. 在一台机器上模拟3个redis节点。一主两从 。

  2. 修改配置文件,下列几个地方

    port 6381
    pidfile /var/run/redis_6381.pid
    logfile "6381.log"
    dbfilename dump6381.rdb
    #这四个地方,修改为对应的端口号标记   6379,6780,6381
    
  3. 启动3个节点

     [root@localhost bin]# redis-server /opt/redisconfig/redis79.conf 
     
     [root@localhost bin]# redis-server /opt/redisconfig/redis80.conf 
     
     [root@localhost bin]# redis-server /opt/redisconfig/redis81.conf 
     
     [root@localhost bin]# ps -ef|grep redis
     root       2253      1  0 21:03 ?        00:00:00 redis-server 127.0.0.1:6379
     root       2258      1  0 21:03 ?        00:00:00 redis-server 127.0.0.1:6380
     root       2263      1  0 21:03 ?        00:00:00 redis-server 127.0.0.1:6381
     root       2268   2130  0 21:03 pts/0    00:00:00 grep --color=auto redis
     
     #3个节点启动完成
    
  4. 使用命令配置

    6379为主节点,6380和6381为从节点

    配置从节点

    #设置主节点命令
     127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
     OK
     127.0.0.1:6380> info replication
     # Replication
     role:slave				#自己变为从节点
     master_host:127.0.0.1	#主节点ip
     master_port:6379		#主节点端口
     master_link_status:up
     master_last_io_seconds_ago:2
     master_sync_in_progress:0
     slave_repl_offset:14
     slave_priority:100
     slave_read_only:1
     connected_slaves:0
     master_replid:148c2238f7a82ed46ef40a2b9d4a7c5f2e1d0fcb
     master_replid2:0000000000000000000000000000000000000000
     master_repl_offset:14
     second_repl_offset:-1
     repl_backlog_active:1
     repl_backlog_size:1048576
     repl_backlog_first_byte_offset:1
     repl_backlog_histlen:14
     127.0.0.1:6380> 
    

    ​ 6381节点也执行上面的操作。此时,主机6379的信息为

     127.0.0.1:6379> INFO replication
     # Replication
     role:master
     connected_slaves:2		#两个从节点
     slave0:ip=127.0.0.1,port=6380,state=online,offset=266,lag=1
     slave1:ip=127.0.0.1,port=6381,state=online,offset=266,lag=1
     master_replid:148c2238f7a82ed46ef40a2b9d4a7c5f2e1d0fcb
     master_replid2:0000000000000000000000000000000000000000
     master_repl_offset:266
     second_repl_offset:-1
     repl_backlog_active:1
     repl_backlog_size:1048576
     repl_backlog_first_byte_offset:1
     repl_backlog_histlen:266
     127.0.0.1:6379> 
    

    ​ 从命令行设置的主从节点,在节点重启后就会丢失设置。使用配置文 件配置主从节点,可在重启后保存配置。

  5. 从配置文件配置主从节点,只需修改从节点的配置文件。

     replicaof 127.0.0.1 6379		#配置主节点ip和端口号
     #masterauth <master-password>  如果主节点有密码需要配置密码
    

    此时的模型为下图所示:

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b671fb462bbf47ab86b0f986f04914dc.png#pic_center)
  1. 主从配置设置好后,只能从主机写,从机不能写。主从都可以读。

    在主机写入的信息会自动同步到所有从节点。

     #从机写报错
     127.0.0.1:6380> set k2 v2
     (error) READONLY You can't write against a read only replica.
     127.0.0.1:6380> 
    
  2. 如果此时主机断开,从机的属性还是不变,从机还是默认连接到主机的。此时集群没有写操作。主机重启后集群还是正常工作。

  3. 如果从机断开,当从机重新启动后会同步到主机写入的所有信息。

  4. 断开后重新连接的从机会和主机发起一次全量复制,连接中的从机和主机发起增量复制。

  5. 另外一种串联式的模型为:

    在这里插入图片描述

    此时数据由6379同步到6380,再由6380同步到6381。6380还是从节点,不能写。

  6. 从节点可以使用命令配置为主节点

      #设置不做任何人的从节点
      127.0.0.1:6381> SLAVEOF no one
      OK
      127.0.0.1:6381> 
      127.0.0.1:6381> info replication
      # Replication
      role:master		#当前为主节点
      connected_slaves:0
      master_replid:bf2e6cd8ff165a47a950bb94a406f11266f32a06
      master_replid2:11e986ffb97209e86125959bd830b7ccce3b503f
      master_repl_offset:1999
      second_repl_offset:2000
      repl_backlog_active:1
      repl_backlog_size:1048576
      repl_backlog_first_byte_offset:15
      repl_backlog_histlen:1985
      127.0.0.1:6381> 
    
  7. 在没有配置哨兵模式的集群中,如果主节点挂掉,只能手动重启主节点或者设置新的主节点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值