py系统学习笔记:第六阶段:数据库编程基础:第四章:Redis的使用:128.Redis集群_主从复制搭建

本文详细介绍了Redis主从复制的搭建过程,包括编写配置文件、启动Redis服务器、设置主从关系以及验证复制成功。通过实例展示了在主节点设置值并在从节点读取的测试,强调了从节点只读的特性。
摘要由CSDN通过智能技术生成

  • 目录

     什么是主从复制

    主从复制的搭建

    编写配置文件

    查看redis是否运行(在src目录执行)

    是:杀死

    否:继续下一步

    编写配置文件(在执行完cd .. 命令后的目录执行(redis-6.2.7))

    编写redis6379.conf配置文件

    编写redis6380.conf配置文件

    编写redis6381.conf配置文件

    启动所配置的所有redis服务器

    查看所有配置的进行是否运行

    为配置文件设置主从的关系

    打开三个虚拟器,并根据端口分别进入redis后台​编辑

    配置主从关系(6379为主,6380与6381为辅)分别在端口80与81虚拟机处执行

    若不小心将主身份(master)配备成从身份(slave)或者想要将从身份(slave)转换成主身份(master)

    查看主从关系是否设置成功

    查看端口为6379的配置是否为主身份

    查看端口为6380的配置是否为从身份

    查看端口为6381的配置是否为从身份

    测试结果是否为主编写,从读取

    在主redis中设置两个值并分别在两个从关系中进行读取与设置值测试

    主redis设置k1为20,k2为30

    从redis获取k1与k2值

    从redis设置值


  •  什么是主从复制

    • 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。且主节点作用为编写,从节点只能进行读取。当主节点出现问题时,可以合理调用从节点来减少损失,同时从节点出问题时,也可以迅速调出另外的从节点来进行缓解。(有效规避实际场景当中单一节点redis容易的面临风险。)
  • 主从复制的搭建

    • 步骤一:编写配置文件。步骤二:启动所配置的所有redis服务器。步骤三:查看是否运行。步骤四:为配置文件设置主从的关系。步骤五:查看是否设置成功。步骤六:测试结果是否为主编写,从读取。
  • 编写配置文件

    • 查看redis是否运行(在src目录执行)

      • lsof -i:6379
         
        • 是:杀死

          • 显示结果:
          • COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
            redis-ser 2132 root    6u  IPv4  64680      0t0  TCP *:6379 (LISTEN)
            redis-ser 2132 root    7u  IPv6  64681      0t0  TCP *:6379 (LISTEN)
            redis-ser 2132 root    9u  IPv4  68896      0t0  TCP localhost:6379->localhost:53122 (ESTABLISHED)
            redis-cli 2194 root    3u  IPv4  68895      0t0  TCP localhost:53122->localhost:6379 (ESTABLISHED)
          • 杀死进程:
          • kill -9 2132
          • kill -9 2194
        • 否:继续下一步

    • 编写配置文件(在执行完cd .. 命令后的目录执行(redis-6.2.7))

      • 编写redis6379.conf配置文件

        • vim redis6379.conf
          • include /usr/local/redis-6.2.7/redis.conf  ——表示将利用路径将redis.conf应用过来,需要注意redis-6.2.7根据实际目录进行改写
          • pidfile /var/run/redis_6379.pid
          • port 6379
          • dbfilename dump6379.rdb
      • 编写redis6380.conf配置文件

        • vim redis6380.conf
        • include /usr/local/redis-6.2.7/redis.conf
          pidfile /var/run/redis_6380.pid
          port 6380
          dbfilename dump6380.rdb

      • 编写redis6381.conf配置文件

        • vim redis6381.conf
          • include /usr/local/redis-6.2.7/redis.conf
            pidfile /var/run/redis_6381.pid
            port 6381
            dbfilename dump6381.rdb

  • 启动所配置的所有redis服务器

    • ./redis-server ../redis6379.conf
    • ./redis-server ../redis6380.conf
    • ./redis-server ../redis6381.conf
  • 查看所有配置的进行是否运行

    • ps -ef|grep redis
       
      • 显示效果:
      • root       2790      1  0 20:03 ?        00:00:00 ./redis-server *:6379
        root       2796      1  0 20:03 ?        00:00:00 ./redis-server *:6380
        root       2802      1  0 20:03 ?        00:00:00 ./redis-server *:6381
        root       2808   2720  0 20:05 pts/1    00:00:00 grep --color=auto redis
  • 为配置文件设置主从的关系

    • 打开三个虚拟器,并根据端口分别进入redis后台

      • redis-cli -p 6379
      • redis-cli -p 6380
      • redis-cli -p 6381
    • 配置主从关系(6379为主,6380与6381为辅)分别在端口80与81虚拟机处执行

      • slaveof 127.0.0.1 6379
      • slaveof 127.0.0.1 6379

    • 若不小心将主身份(master)配备成从身份(slave)或者想要将从身份(slave)转换成主身份(master)

      • slaveof no one
  • 查看主从关系是否设置成功

    • 查看端口为6379的配置是否为主身份

      • info replication

        显示结果:

        # Replication
        role:master
        connected_slaves:2
        slave0:ip=127.0.0.1,port=6381,state=online,offset=0,lag=1
        slave1:ip=127.0.0.1,port=6380,state=online,offset=0,lag=1
        master_failover_state:no-failover
        master_replid:eb784a1459f0f179dbf20f68717484ee7bdd395a
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:0
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:0

    • 查看端口为6380的配置是否为从身份

      • info replication

        显示结果:

        # Replication
        role:slave
        master_host:127.0.0.1
        master_port:6379
        master_link_status:up
        master_last_io_seconds_ago:7
        master_sync_in_progress:0
        slave_read_repl_offset:56
        slave_repl_offset:56
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:eb784a1459f0f179dbf20f68717484ee7bdd395a
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:56
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:56

    • 查看端口为6381的配置是否为从身份

      • info replication

        显示结果:

        # Replication
        role:slave
        master_host:127.0.0.1
        master_port:6379
        master_link_status:up
        master_last_io_seconds_ago:3
        master_sync_in_progress:0
        slave_read_repl_offset:70
        slave_repl_offset:70
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:eb784a1459f0f179dbf20f68717484ee7bdd395a
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:70
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:70

  • 测试结果是否为主编写,从读取

    • 在主redis中设置两个值并分别在两个从关系中进行读取与设置值测试

      • 主redis设置k1为20,k2为30

        • 127.0.0.1:6379> set k1 20
          OK
          127.0.0.1:6379> set k2 30
          OK
      • 从redis获取k1与k2值

        • 端口:6380
          • 127.0.0.1:6380> get k1
            "20"
            127.0.0.1:6380> get k2
            "30"
        • 端口:6381
          • 127.0.0.1:6381> get k1
            "20"
            127.0.0.1:6381> get k2
            "30"
      • 从redis设置值

        • 端口:6380
          • 127.0.0.1:6380> set k3 40
            (error) READONLY You can't write against a read only replica.
        • 端口:6381
          • 127.0.0.1:6381> set k3 40
            (error) READONLY You can't write against a read only replica.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值