Redis主从理论知识汇总

一、Redis 高可靠性

1、数据尽量少丢失。

2、服务尽量少中断。

AOF与RDB保证了前者;针对后者Redis做法是增加副本沉余量。

副本多了之后,Redis提供了主从库模式,以保证数据副本的一致;主从库之间采用的是读写分离的方式。

读操作:主库、从库都可以接收;

写操作:首先到主库执行,然后,主库将写操作同步从库。

1.1同步数据步骤:

第一阶段:建立连接。协商同步过程。主要为了全量复制做准备(使用的RDB文件)。

第二阶段:主库执行bgsave命令。生成RDB文件,接着发给从库。从库清除当前数据,然后加载RDB文件。(传输过程主库不会阻塞,仍然正常接收请求)

第三阶段:主库会把第二阶段执行过程中新收到的写命令,再发送给从库。

总结:主从库第一次数据同步过程需要完成两个耗时操作:生成RDB文件和传输RDB文件。

注意:当从节点过多,可以优化成,主-从-从。

命令:replicaof 所选从库的IP 6379

二、哨兵机制

在这种模式,如果从库发生故障,客户端可以继续向主库或其他从库发生请求,但一旦主库故障。直接影响从库的同步。因为从库没有相应的主库可以进行数据复制操作了。(纯读场景可以接受这种情况)

哨兵机制是实现主从库自动切换的关键机制,它有效地解决了主从复制模式下故障转移问题。

注意:哨兵其实就是一个运行在特殊模式下的Redis进程,主从库实例运行的同时,它也在运行,它负责的三个任务:监控、选新的主库和通知。

2.1监控:

哨兵进程在运行时,周期性给所有主从库发生ping命令,检测它们是否仍然在线运行。如果从库没有响应就会被标记为下线状态。主库如果也没在规定时间响应,就会触发自动切换主库的流程。

2.2选择主库:

哨兵从从库中选择一个主库

2.3通知:

选择完成主库之后,会执行通知,把主库的连接信息发生给其它从库,让它们执行replicaof命令,和新主库建立连接,并进行数据复制。

注意:主库切换涉及误判操作。为了避免这种情况,通常采用多实例组成的集群模式进行部署——哨兵集群。

2.2.1 选择新主库:

有一个简单描述——选择主库的过程称为“筛选+打分”。

筛选:

确认从库在线状态+网络连接状态。如果从库老是和主库断连,这个不能作为主库的候选者。

配置项:down-after-milliseconds * 10  其中10表示次数,次数超过这个阀值,说明这个从库网络状况不好。

打分:

分别安装三个规则依次三轮打分:从库优先级、从库复制进度和从库ID号。只要某一轮从库得分最高,那么它就是主库。

优先级最高:

配置项:slave-priority 给不同库设置不同优先级。在选主时,哨兵会优先级高的从库打高分。如果有一个从库优先级最高,它就是主库。如果优先级一致,进行第二轮打分;

从库复制进度:

主从库同步时通过命令:master_repl_offset记录当前最新写操作在repl_backlog_buffer中位置。而从库slave_repl_offset值记录当前的复制进度。此时我们需要找的就是这个值和主库最接近的。那么它的得分就最高,变更主库。但是如果从库有二个最高一致,就会进行第三轮;

从库ID

每个实例都有一个ID,类似于从库的编号。目前Redis选主库时,有一个默认的规定,在优先级和复制进度都相同的情况下,ID号最小的从库得分最高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值