192.168.3.1-主
192.168.3.2-从
修改主从配置文件的/usr/local/redis/redis.conf
bind 0.0.0.0——修改侦听在任意网卡;默认侦听在127.0.0.1;不修改主从无法相互访问redis
port 6379 ——如果在一台机器上,主从的端口侦听不能一样,否则无法启动
daemonize yes——启用后台守护进程
slave-read-only yes——默认从为只读模式
protected-mode yes——启用保护模式,禁止在公网访问;要是配置里没有指定bind和密码,开启保护redis
——————以上主从配置都一样——————————
在从192.168.3.2 redis的/usr/local/redis/redis.conf添加以下一行配置
slaveof 192.168.3.1 6379
为了安全,设置主redis密码,修改主192.168.3.1 redis下的redis.conf
requirepass password——设置主redis密码
设置192.168.3.2从redis访问192.168.3.1主redis的密码:
masterauth password——从访问主的认证密码
注意:默认是读写分离的,从库是无法写入数据的;
————————————————————————
[root@master bin]# ./redis-cli -a redis密码
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.3.2,port=6379,state=online,offset=8780,lag=1
master_replid:55e58cf128d624d263a13da690d6294191fa7c8d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:8780
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:8780
——————————————————————————————
[root@slave bin]# ./redis-cli -a redis密码
role:slave
master_host:192.168.3.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:8864
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:8864
repl_backlog_histlen:8864
——————————————————————
主添加key-value
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set hello word
OK
————————————————————
从查询hello
127.0.0.1:6379> get hello
"word"
127.0.0.1:6379> set rmrf redis
(error) READONLY You can't write against a read only slave.——只读无法写入
127.0.0.1:6379>
停止主redis
127.0.0.1:6379> shutdown
not connected>
将从redis设置成主redis
[root@slave bin]# ./redis-cli slaveof NO ONE
1) "hello"
127.0.0.1:6379> set nice man
+++++++++
原来的主3.1现在又好了。要切换回去;将3.2的redis数据save保存
127.0.0.1:6379> save
将现在的3.2主redis根目录下dump.rdb文件拷贝覆盖到原来3.1主redis的根目录/bin下
在3.2下执行
scp /usr/local/redis/bin/dump.rdb [email protected]:/usr/local/redis/bin/
启动原来的主redis
/bin/./redis-server ../redis.conf
————————————————
最后把现在3.2的主切换为原来的主3.1
./redis-cli slaveof 192.168.3.1 6379
在检查下主和从的redis;以前的从redis又变成只读了;
本文转自 rm_rf_db 51CTO博客,原文链接:http://blog.51cto.com/12185273/1979164,如需转载请自行联系原作者