• (四)Redis主从复制(单机版,不集群)


    持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

                 Redis:master

                /      

               /        

              /          

          Redis:slave1      Redis:slave2

    说明:

    • n  主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。
    • n  主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。
    • n  只有一个主redis,可以有多个从redis。
    • n  主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求
    • n  一个redis可以即是主又是从

    主从转换(手动)

    环境描述:
    主redis:192.168.10.1 6379
    从redis:192.168.10.2 6380

    一、主从配置

    1、将主从redis配置文件redis.conf中的aemonize no 改为 yes

    2、修改从redis配置文件redis.conf中的port 6379 改为 6380,添加slaveof 192.168.10.1 6379

    3、启动主从服务

          主redis:     

          [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf

         从redis:

         [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-slave/redis-2.8.3/redis.conf

    4、测试数据同步

          主redis:

          [root@localhost redis-2.8.3]# src/redis-cli -p 6379
         127.0.0.1:6379> set name abc
         OK
         127.0.0.1:6379> get name
         "abc"
         127.0.0.1:6379>

        从redis:

          [root@localhost redis-2.8.3]# src/redis-cli -p 6380
         127.0.0.1:6380> get name
         "abc"
         127.0.0.1:6380>

    5、默认是读写分离的

         在从redis:

         [root@localhost redis-2.8.3]# src/redis-cli -p 6380
         127.0.0.1:6380> set name 123
         (error) READONLY You can't write against a read only slave.

         

     二、主从切换

         1、停止主redis

         [root@localhost redis-2.8.3]# src/redis-cli -n 6379 shutdown
         [root@localhost redis-2.8.3]# src/redis-cli -p 6379
         Could not connect to Redis at 127.0.0.1:6379: Connection refused
         not connected>

         2、将从redis设成主redis
         [root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof NO ONE
         OK

        3、测试从redis是否切换从主redis

         [root@localhost redis-2.8.3]# src/redis-cli -p 6380
         127.0.0.1:6380> set name 123
         OK
         127.0.0.1:6380> get name
         "123"
         127.0.0.1:6380>

         4、原来的主redis恢复正常了,要重新切换回去

             1)将现在的主redis的数据进行保存

         [root@localhost redis-2.8.3]# src/redis-cli -p 6380
         127.0.0.1:6380> get name
         "abc"
         127.0.0.1:6380> set name 123
         OK
         127.0.0.1:6380> get name
         "123"
         127.0.0.1:6380> save
         OK
         127.0.0.1:6380> get name
         "123"
         127.0.0.1:6380>  

           2)将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

           3)启动原来的主redis

          [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf
           4)在现在的主redis中切换

          [root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof 192.168.10.1 6379
          OK

  • 相关阅读:
    Java代码输出到txt文件(申请专利贴源码的必备利器)
    Vmware10组建局域网
    Ubuntu14.04更换阿里云源
    Ubuntu16.04如何彻底删除Apache2
    HustOJ平台搭建
    Centos 7 联想Y430P无线网卡驱动安装 过程参考
    Windows远程CentOS桌面
    centos 7 查看系统/硬件信息及运维常用命令+联想Y430P无线网卡驱动安装
    zookeeper工作原理、安装配置、工具命令简介
    centos 7 安装五笔输入法
  • 原文地址:https://www.cnblogs.com/webyyq/p/8727628.html
Copyright © 2020-2023  润新知