Redis 主从复制是主机数据更新后根据配置和策略,自动同步到备份的master/slaver机制,master写为主,slaver以读为主,能够做到读写分离,容灾恢复。

主从复制的准备工作

    a、拷贝多个redis.conf文件,
    b、开启daemonize yes,
    c、Pid文件名字,
    d、指定端口,
    e、log文件名字,
    f、dump.rdb文件名

一、一主二从

两个从库使用命令:slaveof 主库ip 主库端口 配置跟随的主库,配置完后可以使用info replication命令查看信息;

注:从机连接后恢复主机所有记录;主写从机存在记录,从机无法写;主机死了,从机原地待命,不会变成主机,主机再次启动,关系不变;
从机死了,再启动从机则变成master,需要再次连接,除非配置到redis.conf;(slaveof 127.0.0.1 6381)

二、薪火相传

两个从库使用命令:slaveof 主库ip 主库端口 配置跟随的主库,配置成a 是b的master,b是c的master,则a,b角色都是slave,在a中set记录,b,c都会有记录

三、反客为主

在一主二仆情况下,当主机挂了,从机可以使用slaveof no one成为新的主机,另一个从机还是原来状态,不会改变主机的对象

四、哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了然后通过投票数将从库转成主库

1、3个redis先配合成一主二从的状态

2、新建sentinel.conf文件,并进行配置

#sentinel端口
port 26379

#工作路径,注意路径不要和主重复
dir "/usr/local/redis-6379"

# 守护进程模式
daemonize yes

#关闭保护模式
protected-mode no

# 指明日志文件名
logfile "./sentinel.log"

#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
#sentinel monitor 被监控的主机名字(自己取名)127.0.0.1 6379 1 
#最后一个1,表示主机挂了salve投票看让谁的票多于1票以上接替成为主机,得票数多为主机
sentinel monitor mymaster 192.168.125.128 6379 1

# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 5000

#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000

#设置master和slaves验证密码,可以不设
sentinel auth-pass mymaster 123456

3、哨兵模式的启动

在redis的彬目录: ./redis-setinel /home/ubuntu/myredis/sentinel.conf (根据自己的目录)