博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(四)Redis主从复制(单机版,不集群)
阅读量:6246 次
发布时间:2019-06-22

本文共 2320 字,大约阅读时间需要 7 分钟。

持久化保证了即使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

 

转载于:https://www.cnblogs.com/webyyq/p/8727628.html

你可能感兴趣的文章
线程间的通信、同步方式与进程间通信方式
查看>>
C#设计模式之四建造者模式(Builder Pattern)【创建型】
查看>>
数据结构与算法(周鹏-未出版)-第六章 树-6.3 二叉树基本操作的实现
查看>>
[Python] List & Object spread in Python
查看>>
[js高手之路]html5 canvas动画教程 - 下雪效果
查看>>
JTable更新内容的方法
查看>>
Linux之统计特定进程运行数量
查看>>
Oracle聚合连接字符串
查看>>
《java与模式》
查看>>
Charles从入门到放弃
查看>>
Win7网络修复,winsock/tcpip
查看>>
ajax补充--------FormData等...
查看>>
Android 获取android安装apk框的安装状态(如点击取消、返回)
查看>>
IIS中的application总是报404错误
查看>>
jQuery元素操作1
查看>>
123. Best Time to Buy and Sell Stock III
查看>>
前端学算法之搜索算法
查看>>
Linux下开启vim高亮
查看>>
java反射--动态加载
查看>>
Java下String逗号数组和List<String>的互相转换
查看>>