读写分离,性能扩展;快速容灾恢复
一主两从
准备一台服务器,启动不同的redis端口,6379、6380、6381
- 连接redis-cli
redis-cli
- 查看主从信息
info replication
主机6379
从机6380、6381
- 设置从机
config set masterauth password -- 主机没有密码跳过
slaveof <ip> <port>
- 查看主从信息
info replication
主机
从机
5. 主机写数据,从机可以读到
6. 从机只有读权限,没有写权限
7. 当主机宕机,从机还是从机,主机重启即可恢复
8. 但从机宕机,从机重启需要重新设置,也可以通过redis.conf
配置文件设置,使其永久生效
薪火相传
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
- 用
slaveof <ip><port>
- 中途变更转向:会清除之前的数据,重新建立拷贝最新的
- 风险是一旦某个slave宕机,后面的slave都没法备份
- 主机挂了,从机还是从机,无法写数据了
反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
用 slaveof no one
将从机变为主机。
当主机6379宕机时,我们只需要将6380使用
slaveof no one
将6380变成主机即可恢复使用
哨兵模式
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
- 新建sentinel.conf文件
- 编写内容
sentinel monitor mymaster 127.0.0.1 6379 1
- 启动哨兵
redis-sentinel sentinel.conf
4. 当主机宕机时能自动将其中从机升级为主机,而原先的主机再次启动将会变成从机