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密码

127.0.0.1:6379> info replication

# Replication

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_replid:55e58cf128d624d263a13da690d6294191fa7c8d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:8864

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

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

OK

[root@slave bin]# ./redis-cli -a redis密码

127.0.0.1:6379> keys *

1) "hello"

127.0.0.1:6379> set nice man

OK

+++++++++

原来的主3.1现在又好了。要切换回去;将3.2的redis数据save保存

127.0.0.1:6379> save

OK

将现在的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又变成只读了;