Redis-3.0.7主从配置

来源:互联网 发布:淘宝化妆品店铺介绍 编辑:程序博客网 时间:2024/06/12 20:21

一、原理

Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:

1.master可以有多个slave
2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构
3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余

5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

二、配置

接上一篇文章,安装从redis服务器。
环境描述:
主redis:192.168.0.149 6379
从redis:192.168.0.148 6380
一、主从配置
1、将主从redis配置文件redis.conf中的aemonize no 改为 yes
2、修改从redis配置文件redis.conf中的port 6379 改为 6380,添加slaveof 192.168.0.149 6379 
3、启动主从服务,根据上一篇将启动命令写入别名到~/.bashrc文件,因此启动时就用简短的别名了:
      主redis:      
      [root@JfbIpadServer02 /usr/local/redis/bin]#startRedis
     从redis:
     jfb-test:/usr/local/redis/bin # startRedis

4、测试写入数据同步

主redis:

master
master

从redis:这里启动客户端要带上端口号

slave

slave

5、默认是读写分离的
在从redis:

127.0.0.1:6380> set mykey thisismyslaveset
(error) READONLY You can't write against a read only slave.
127.0.0.1:6380> 

二、主从切换

1、停止主redis

[root@JfbIpadServer02 ~]#stopRedis
[root@JfbIpadServer02 /usr/local/redis/bin]#./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
2、将从redis设成主redis

jfb-test:/usr/local/redis/bin # ./redis-cli -p 6380 slaveof NO ONE
OK
3、测试从redis是否切换从主redis,这里能set值,说明就成了主,上面是从的时候默认是只读的不能定。

jfb-test:/usr/local/redis/bin # ./redis-cli -p 6380
127.0.0.1:6380> set name slavetomaster
OK
127.0.0.1:6380> get name
"slavetomaster"
4、原来的主redis恢复正常了,要重新切换回去

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

127.0.0.1:6380> save
OK

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

jfb-test:/usr/local/redis/bin # scp dump.rdb root@192.168.0.149:/usr/local/redis/bin/
root@192.168.0.149's password: 
dump.rdb  
3)启动原来的主redis(149)

[root@JfbIpadServer02 /usr/local/redis/bin]#startRedis
[root@JfbIpadServer02 /usr/local/redis/bin]#./redis-cli
127.0.0.1:6379> ping
PONG

4)将现在的主redis(148)中切换成slave,切换后可以发现使用set命令不行了,redis又变成只读的了。

jfb-test:/usr/local/redis/bin # ./redis-cli -p 6380 slaveof 192.168.0.149 6379
OK
jfb-test:/usr/local/redis/bin # ./redis-cli -p 6380 
127.0.0.1:6380> ping
PONG
127.0.0.1:6380> set name aftertransfer
(error) READONLY You can't write against a read only slave.


0 0
原创粉丝点击