Redis 主从同步与哨兵集群

Redis如何主从同步?

从库向主库发送指令 replicaof 172.16.19.3 6379 成为主库的从库。
主从确认复制进度offset和runID。
从库清空自身原有数据,接收主库的RDB文件进行同步。
从库接收主库的RepicationBuffer,记录了生成RDB期间的操作,然后进行同步。

主从同步期间的客户端请求怎么办

主从同步期间的客户请求正常处理,但是会把生成RDB之后收到的操作记录到replication buffer中,然后发给从库。

主从从级联模式分担压力

从库可以成为其他从库的从库,那么主库不需要把写操作发给所有的从库,一部分从库可以分担这些任务,发送给自己的从库(从库的从库)。

主从网络连接中断怎么办

主从网络连接中断,在重连之后从库可以读取环形缓冲区中的数据进行同步而不需要全量同步。环形缓冲区主库会记录自己写到的位置,从库会记录同步到的位置。因此缓冲区大小不能太小,防止从库来不及同步就被覆盖了。

主库断开连接或者崩溃了怎么办

主库如果崩溃,读操作不会受到影响,但是写操作就没办法了。因此需要重新选出主库。
这里使用哨兵来不断探测主库和从库的存活的存活情况,并且负责主库的选举,和客户端的通知。

哨兵集群

哨兵会不断通过ping命令来给主从库标记主观存活或者下线。如果主库下线就需要重新选举主库,但是这种下线很有可能是由于网络原因导致的,所以单个哨兵不足以确定主库的客观下线,因此使用多个哨兵,形成哨兵集群。

哨兵集群如何确定主库断线?

当单个哨兵发现主库断线后,会询问集群中的其他哨兵主库的情况,当超过quorum(可以自行设置,一般是超过一半)的哨兵(包括自身)都判断主库下线,则主库被认定为客观下线。

哨兵如何从从库中选举主库?

四个选举流程:

1、网络情况:通过从库与旧主库的连接情况去除掉一些从库候选人,一般可以使用down-after-milliseconds*10,如果在这段时间内,断连次数超过十次,说明网络情况不好。
2、优先级:可以认为设置从库的优先级
3、和旧主库的同步程度:通过同步偏移量offset来判断同步程度
4、ID号

哪个哨兵来负责主从的切换?

通过投票选举,如果有半数以上且大于等于quorum哨兵同意该哨兵成为leader。那么该哨兵将负责主从的切换,和客户端的通知。
tips: 负责主从切换必须保证集群一半以上的哨兵是正常的,不然无法主从切换。此外当没有哨兵获得满足条件的票数时候,leader选举失败,隔一段时间再选举leader。

哨兵集群怎么和客户端、主库、从库连接的?

哨兵集群只需要连接主库就可以,哨兵集群通过pub/sub就可以向主库获取到其他哨兵的ip和port,并进行通信,客户端通过pub/sub向哨兵了解当前的同步情况。哨兵通过INFO命令可以向主库获取到从库列表以及对应的从库ip和port,进行连接通信。在选举出主库之后,哨兵需要通知从库与新主库进行同步。

down-after-milliseconds值是什么

down-after-milliseconds是我们认定主从库断连的最大连接超时时间。如果在down-after-milliseconds毫秒内,主从节点都没有通过网络联系上,我们就可以认为主从节点断连了。
调大down-after-milliseconds值可以增加哨兵实例判断主库不可达的时间阈值 。这样可以减少因为网络抖动或者短暂的故障导致的误判 。但是,调大down-after-milliseconds值也会增加故障恢复的延迟 。因此,需要根据具体的场景和需求来平衡这两方面的影响 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一个基于内存的高性能键值存储系统,支持多种数据结构。在实际应用中,为了保证Redis的高可用性,可以采用主从复制、哨兵集群等方式。 1. 主从复制 主从复制的原理是将一台Redis服务器的数据复制到其他多个Redis服务器上,其中主节点是读写节点,从节点只能读取数据。主节点将自己的数据变化通过异步的方式发送给从节点,从而实现数据同步。主从复制可以提高Redis的可用性和性能,并且可以支持读写分离,从而减轻主节点的压力。 2. 哨兵 哨兵是一种特殊的Redis服务器,用于监控主从复制的状态,并在主节点故障时自动将从节点切换为主节点。哨兵可以自动发现Redis服务器,并监控它们的状态,当发现主节点宕机时,会通过投票的方式选举新的主节点,并将从节点切换为新的主节点的从节点。哨兵可以保证Redis的高可用性,并且可以自动完成主从切换,从而减少人工干预的工作量。 3. 集群 Redis集群是一种分布式的Redis系统,可以将多个Redis服务器组成一个逻辑上的整体,并支持横向扩展。Redis集群采用分片的方式存储数据,将数据分散到多个节点上,从而提高Redis的可用性和性能。Redis集群可以自动完成节点的发现和管理,并支持数据的备份和恢复,从而保证Redis的高可用性和数据的安全性。 总之,主从复制、哨兵集群Redis实现高可用性的重要手段,可以提高Redis的可用性和性能,并保证数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值