今天学习了一下redis的主从配置,发现网上说的好多坑,摸索了半天,说一下自己的经历
一.首先要准备两台服务器,用虚拟机代替
1.配置主服务器
主:192.168.1.130 port:6379
2.配置从服务器
修改从服务器的配置port:6380 slaveof: 192.168.1.130 6379
3.启动服务器
启动主服务器:./src/redis-server 客户端:./src/redis-cli
启动从服务器:src/redis-serverredis-conf 客户端:src/redis-cli -p 6380(修改后的端口)
4.测试数据同步
主redis:
[root@localhost redis-2.8.3]# src/redis-cli -p 6379
127.0.0.1:6379> set name 123
OK
127.0.0.1:6379> get name
"123"
127.0.0.1:6379>
从redis:
[root@localhost redis-2.8.3]# src/redis-cli -p 6380
127.0.0.1:6380> get name
"123"
127.0.0.1:6380>
默认是读写分离,从服务器只可以读
如果有读之外的操作会报错:(error) READONLY You can't write against a read only slave.
二.主从切换
停止主redis:./src/redis-cli -n 6379 shutdown
将从redis设置为主redis:./src/redis-cli -p 6380 slaveof NO ONE(现在之前的从redis变成主的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> save
OK
127.0.0.1:6380>
1.将数据保存 save命令
2.将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录
3.启动原来的主redis
4.在现在的主redis中切换
src/redis-cli -p 6380 slaveof 192.168.10.1 6379