master-slave是指:主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主;
redis的主从复制配置是在从库上配置的,配置的命令为:
slaveof 主库IP 主库端口
下面是配置的过程示意图:
一、更改配置
(1)拷贝多个redis.conf文件
(2)在redis6380.conf 和redis6381.conf这两个文件中更改如下配置:
- 开启daemonize yes
- pid文件名字
- 指定端口号
- log文件名字
- dump.rdb名字
修改之后的文件内容为:
redis6380.conf 中:
redis6381.conf文件中:
二、开启多个redis客户机
在没有任何配置的情况下,三个客户机都是master,没有任何关系;
三、设置主库和从库模式 - 一主二仆:即 一个master有多个slave
将6380和6381这两个端口的客户机设置为6379这个端口的客户机的slave;
在6380端口的这个客户机上:使用命令 slaveof 127.0.0.1 6379
’在6381端口的这个客户机上:使用命令 slaveof 127.0.0.1 6379
四、再次查看三个客户机的状态
使用命令:info replication
可以看见:6379端口的客户机是master,有两个slave;
6380端口和6381端口的客户机是slave,他们的主库master的端口是6379
五、测试
在主库6379端口的客户机上插入数据:
然后发现,在6380端口和6381端口的客户机上都可以获取到数据
六、 在主从模式中,如果主库挂了,则从库是原地待命,不会上位;当主库回来后,从库依旧照旧
在这里我们将6379端口的这个主库退出:
再次查看6380端口和6381端口的客户机发现:这两个客户机仍然是slave模式,而不会因为主库挂掉就变成master
七、设置主从模式 - 薪火相传:即 上一个slave可以是下一个slave的master,slave同样可以接收其他slave的连接和同步请求
设置6380端口的客户机是6379端口的客户机的slave;6381端口的客户机是6380端口的客户机的slave
查看6379端口客户机的状态信息
八、测试
在6379端口客户机上插入数据:
会发现:在6380端口客户机和6381端口客户机上都能查询到数据
九、slaveof no one :使当前数据库停止与其他数据库的同步,转为主数据库;
在七的基础上,在6380端口的客户机上执行slaveof no one命令 :
发现:6380端口的客户机不再是6379端口客户机的从库slave了,6380端口的客户机不再与6379端口客户机同步了,6379端口客户机变成了master;