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 (根据自己的目录)