redis 非集群的主从配置及切换
单纯的master-slave不能称之为集群,只能叫做读写分离。此案例只针对master为单点服务,且程序端写死master为可写,slave为只读。若master宕机则不可用,若主从未开启持久化,不要立刻重启master否则会flush掉slave的数据。此方案适用于master需要停机而不让内存的数据丢失。
若集群为高可用方案如sentinel,则无需手动切换,sentinel自动触发故障转移,无需客户端触发操作。
环境描述:
主redis:119.29.36.237 6379
主redis:119.29.36.237 6380
一、主从配置
1、将主从redis配置文件redis.conf中的aemonize no 改为 yes
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
dir /var/redis/6379
2、修改从redis配置文件redis.conf中的port 6379 改为 6380,添加slaveof 119.29.36.237 6379
daemonize yes
slaveof 119.29.36.237 6379
pidfile /var/run/redis_6380.pid
port 6380
创建文件 mkdir -p /var/redis/6379 /var/redis-slave/6380
3、启动主从服务
主redis:
redis-server /etc/redis/6379.conf
从redis:
redis-server /etc/redis/slave.conf
4、测试数据同步
主redis:
redis-cli -p 6379
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> set name bat
OK
127.0.0.1:6379> get name
"bat"
从redis:
redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> get name
"bat"
5、默认是读写分离的
在从redis:
127.0.0.1:6380> set car bmw
(error) READONLY You can't write against a read only slave.
二、主从切换
1、停止主redis
#ps aux |grep redis
root 2931 0.0 0.1 35088 1816 ? Ssl 11:05 0:00 redis-server *:6379
root 2937 0.0 0.1 35088 1808 ? Ssl 11:05 0:00 redis-server *:6380
root 2947 0.0 0.0 10800 968 pts/2 S+ 11:07 0:00 redis-cli -p 6379
root 2951 0.0 0.0 10800 972 pts/0 S+ 11:08 0:00 redis-cli -h 127.0.0.1 -p 6380
root 2956 0.0 0.0 5504 724 pts/3 S+ 11:09 0:00 grep redis
#kill 2931
#redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
2、将在从上将从redis设成主redis
# redis-cli -p 6380 slaveof NO ONE
OK
3、测试从redis是否切换从主redis
#redis-cli -p 6380
127.0.0.1:6380> KEYS *
1) "name"
127.0.0.1:6380> get name
"bat"
127.0.0.1:6380> set car bmw
OK
127.0.0.1:6380> set person man
OK
127.0.0.1:6380> kEYS *
1) "name"
2) "person"
3) "car"
4、原来的主redis恢复正常了,要重新切换回去
1)将现在的主redis的数据进行保存
#redis-cli -p 6380
127.0.0.1:6380> KEYS *
1) "name"
2) "person"
3) "car"
127.0.0.1:6380> save
OK
2)将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录
cp /var/redis-slave/6380/dump.rdb /var/redis/6379/
cp: overwrite `/var/redis/6379/dump.rdb'? y
3)启动原来的主redis
redis-server /etc/redis/6379.conf
4)在现在的主redis中切换
# redis-cli -p 6380 slaveof 119.29.36.237 6379
OK
测试是否切换成功
主
redis-cli -p 6379
127.0.0.1:6379> KEYS *
1) "person"
2) "car"
3) "name"
127.0.0.1:6379> set test master
OK
127.0.0.1:6379> KEYS *
1) "person"
2) "car"
3) "name"
4) "test"
从
127.0.0.1:6380> kEYS *
1) "test"
2) "name"
3) "car"
4) "person"
127.0.0.1:6380> set test slave
(error) READONLY You can't write against a read only slave.
redis 非集群的主从配置及切换的更多相关文章
- redis集群(主从配置)
市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想法成为现实.今天主要内容便是redi ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- redis搭建集群和主从
说明 Redis集群至少需要3个节点,来支持投票容错机制,每个节点都有从节点,所有最少是6个服务(3个主3个从) 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384 ...
- Redis 集群_主从配置_哨兵模式
首先:slaveof 可以在[从]服务器启动一个service服务,直接将[从]服务器定义为[从Redis] redis-server --slaveof <master-ip> < ...
- Redis集群_主从配置
链接地址http://www.2cto.com/database/201502/377069.html 收藏备用. Redis主从配置(Master-Slave) 一. Redis Replicati ...
- Redis cluster 集群部署和配置
目录 一.集群简介 cluster介绍 cluster原理 cluster特点 应用场景 二.集群部署 环境介绍 节点部署 启动集群 三.集群测试 一.集群简介 cluster介绍 redis clu ...
- MySql集群FAQ----mysql主从配置与集群区别、集群中需要多少台计算机呢?为什么? 等
抽取一部分显示在这里,如下, What's the difference in using Clustervs using replication? 在复制系统中,一个MySQL主服务器会更新一个或多 ...
- 【Spring系列】Spring mvc整合redis(非集群)
一.在pom.xml中增加redis需要的jar包 <!--spring redis相关jar包--> <dependency> <groupId>redis.cl ...
- MongoDB ReplacaSet & Sharding集群安装 配置 和 非集群情况的安装 配置 -摘自网络
单台机器做sharding --单机配置集群服务(Sharding) --shard1_1 mongod --install --serviceName MongoDBServerShard1 --s ...
随机推荐
- Unity3D入门基本概念整理
1. (1)在场景中添加资源 只需单击工程视图 (Project View) 中的网格(Mesh)并拖动至层级视图 (Hierarchy) 或场景视图 (Scene View),便可将其添加至场景 ( ...
- Sql订阅发布注意事项
1.做订阅发布的2台Sql服务器最好要版本一致,不能出现类似如下情况: Sql2008 R2[发布] - Sql2008[订阅]: Sql2008 R2[发布] - Sql2012[订阅] 2.订阅发 ...
- ExtJS4图片验证码的实现
ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 转自:http://blog.sina.com.cn/s/blog_8d4bbd890100xaxh.html 上多少篇文章,重要 ...
- mvc设计模式和mvc框架的区别
Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
- 开源论坛MvcForum推荐
MvcForum算是Asp.net中开源论坛佼佼者之一.主要使用ASP.NET MVC 5 &Unity & Entity Framework 6,有较强的可撸性.是论坛开发者的不二之 ...
- android.widget.RadioButton 单选按钮(转)
大家好,我们今天这一节要介绍的是RadioGroup 的组事件.RadioGroup 可将各自不同的RadioButton ,设限于同一个Radio 按钮组,同一个RadioGroup 组里的按钮,只 ...
- 【基础】PHP变量及变量作用域
新学PHP,比较有意思的语法,记录下. 1. 变量的作用域 作用域只分两个Global和Local,Global相对于整个.php文件来讲,Local是本地最小范围,是距离变量最近的范围,如:在函数中 ...
- sqlserver 死锁原因及解决方法
其实所有的死锁最深层的原因就是一个:资源竞争 表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A,这时用户A由于用户B已经锁住表B,它 ...
- 解决Win10服务主机本地系统网络受限
换成win10有一段时间了,界面风格比win7好看,但有部分程序还是不兼容,还好用虚拟机可以将就解决.但有一个问题一直困扰了我好久,今天终于解决了. 问题描述 在进程中,服务主机:本地系统(网络受限) ...
- SharePoint 2013 手动删除爬网项目
本文介绍如何手动删除某些搜索项目,其实删除搜索项目并不常用,主要还是在刚刚完成爬网,就删除了某些项目,然后有比较敏感需要马上删除的时候.下面,就跟着图文简单了解下手动删除已爬网的项目吧. 1.配置好搜 ...