主从通信过程
Master配置:
1:关闭rdb快照(备份工作交给slave)
2:可以开启aof
slave配置:
1: 声明slave-of
slaveof 192.168.0.102
2: 配置密码[如果master有密码]
masterauth 密码
3: [某1个]slave打开rdb快照功能
4: 配置是否只读[slave-read-only]
slave-read-only yes
redis主从复制的缺陷
缺陷:
每次slave断开后,(无论是主动断开,还是网络故障)
再连接master
都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍.
所以要记住->多台slave不要一下都启动起来,否则master可能IO剧增
sentinel哨兵
Sentinel不断与master通信,获取master的slave信息.
监听master与slave的状态
如果某slave失效,直接通知master去除该slave.
如果master失效,,是按照slave优先级(可配置), 选取1个slave做 new master
疑问: sentinel与master通信,如果某次因为master IO操作频繁,导致超时,
此时,认为master失效,很武断.
解决: sentnel允许多个实例看守1个master, 当N台(N可设置)sentinel都认为master失效,才正式失效.
Sentinel选项配置
port 26379 # 端口
sentinel monitor mymaster 127.0.0.1 6379 2 ,
给主机起的名字(不重即可),
当2个sentinel实例都认为master失效时,正式失效
sentinel down-after-milliseconds mymaster 30000 #多少毫秒后连接不到master认为断开
sentinel can-failover mymaster yes #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改.
sentinel parallel-syncs mymaster 1 # 一次性修改几个slave指向新的new master.
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh # 在重新配置new master,new slave过程,可以触发的脚本