1.redis的复制
2.如何实现redis复制
(1)修改配置文件细节操作
(2)一主二从:
当主机挂了,从机原地待命
当从机挂了,重启之后需要重新执行slaveof,除非将配置写进配置文件中
主机负责写入,而从机只能读取,不能写入(读写分离)
(3)去中心化——薪火相传
(4)反客为主
3.复制原理
4.哨兵模式(以一主二从为例)
(1)如何实现哨兵模式
启动哨兵:(可以同时监控多个master,需要在sentinel.conf中配置)
如果之前的master回来,就会变成新master的slave;不会产生冲突!
(2)哨兵的实现原理
主要包括三个定时任务:
①每隔10s,每个Sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构:
--通过向主节点执行info,获取从节点信息,这也是为什么Sentinel节点不需要显示配置监控节点
-- 当有新的从节点加入时将被立即感知
-- 节点不可达或者故障转移后,可以通过info命令更新节点拓扑结构。
②每隔2秒,每个Sentinel节点回向redis数据节点的_sentinel_:hello频道上发送该sentinel对于主节点的判断以及当前sentinel节点的信息,同时每个sentinel也会订阅该频道,来了解其它sentinel节点以及他们对主节点的判断,所以这个定时任务可以完成以下两个工作:
——发现新的Sentinel节点:通过订阅主节点_sentinel_:hello了解其他的Sentinel信息,如果是新加入的Sentinel节点,将该Sentinel节点信息保存起来,并与该Sentinel节点创建连接。
——Sentinel节点之间交换主节点的状态,作为后面客观下线以及领导者选举的依据。
③每隔1秒,每隔Sentinel节点回向主节点、从节点、其余Sentinel节点发送一条ping命令做心跳检测,来确定这些节点当前是否可达。