16boke - 一路博客

Redis主从配置及主从切换

0、环境概述

127.0.0.1  6379 主

127.0.0.1  6380 从

127.0.0.1  6381 从

1、在redis目录下建立conf文件夹,存主从的redis.conf配置文件

建立三个文件:redis_6379.conf、redis_6380.conf、redis_6381.conf

2、在redis目录下建立dump文件夹,存本地数据库文件

redis启动的时候会自动生成这六个文件(前提是开启rdb和aof文件持久化):appendonly_6379.aof、appendonly_6380.aof、appendonly_6381.aof、redis_6379.rdb、redis_6380.rdb、redis_6381.rdb

3、主redis_6379.conf文件内容:

daemonize yes

pidfile /var/run/redis_6379.pid

port 6379
tcp-keepalive 0
loglevel notice
logfile /usr/soft/redis/logs/redis_6379.log

save 900 1
save 300 10
save 60 10000

dbfilename redis_6379.rdb

dir /usr/soft/redis/dump/

appendonly yes

appendfilename "appendonly_6379.aof"

# appendfsync always
appendfsync everysec
# appendfsync no

4、从redis_6380.conf配置文件内容:

daemonize yes

pidfile /var/run/redis_6380.pid

port 6380
tcp-keepalive 0
loglevel notice
logfile /usr/soft/redis/logs/redis_6380.log

save 900 1
save 300 10
save 60 10000

# The filename where to dump the DB
dbfilename redis_6380.rdb

dir /usr/soft/redis/dump/

slaveof 127.0.0.1 6379
slave-read-only no

appendonly yes

appendfilename "appendonly_6380.aof"

# appendfsync always
appendfsync everysec
# appendfsync no


从6381的配置与从6380一样,唯一需要注意的是修改端口、路径、备份文件名等。

四、启动redis

1、启动主redis:redis-server ./redis_6379.conf。在conf目录下执行,如果在其它目录下运行,需要指定redis_6379.conf的详细路径

2、启动从redis:redis-server ./redis_6380.conf。

2、启动从redis:redis-server ./redis_6381.conf。

启动完后redis服务会在后台运行


五、查看是否正常启动

执行:ps -ef|grep redis

clipboard.png

六、测试主从是否配置正确

因为我们配置的在主redis中添加,会自动同步到从的redis库中,但是在从库执行添加数据确不会被同步到主库中。

在主库中添加set a a

clipboard.png

在从库中查看发现key为a的数据已经同步过来了。

clipboard.png

七、主从切换

 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

Redis