美文网首页缓存架构
分布式Redis主备复制

分布式Redis主备复制

作者: 95a6af369245 | 来源:发表于2019-01-07 17:15 被阅读64次

  Redis采用主备复制的方式保证一致性,所有节点中,只有一个节点为主节点(master),它对外提供写服务,然后异步的将数据复制到其他节点上

  主备复制流程

  Redis包含master 和slave 2种节点:

  master 对外提供写服务

  slave 节点作为master的数据备份,不可以提供写服务

  主备复制由master 主动触发

  1、首先slave向master发起SYNC命令。这一步在slave启动后触发,master 被动的将新slave节点加入主备复制集群

  2、master收到SYNC后,开启BGSAVE 操作。BGSAVE 是Redis的一种全量持久化机制(RDB)

  3、BGSAVE完成后,master将快照信息发送给slave

  4、发送期间,master收到来自Client的新写入命令,除了正常响应外,再存入一份到backlog队列

  5、快照信息发送完成后,master继续发送backlog队列中的信息

  6、backlog发送完成之后,后续的操作同时发给slave,保持实时的异步复制

  对于上面的slave节点,处理逻辑如下:

  发送完SYNC后,继续对外提供服务

  开始接受master的快照信息,此时会清空slave现有数据,并将master快照写入

  接收backlog 并执行(回放),期间对外提供读服务

  继续接受master的命令副本,并继续回放,从而保持和master的数据一致性

  如果有多个slave 同时发送SYNC 命令

  只要第2个slave的SYNC 命令发生在master 完成BGSAVE之前,第2个slave 将和第1个收到相同的快照和backlog

  否则第2个slave的SYNC将触发master的第2次BGSAVE

  断点续传

  当每次slave 通过SYNC 和master同步数据时,master都会dump 全量数据并发送

  当一个已经和master 完成了同步,并且并保持了长时间的slave,当网络断开很短时间再重新连上时,master不得不重新做一次全量的dump传送。这种无疑会增加大量的无效开销,最好的方式是只同步网络断开期间的增量数据。

  Redis的 PSYNC(Partial Sync)可以用于代替SYNC,做到master-slave基于断点续传的主备同步协议。master-slave 2端通过维护一个offset记录当前已经同步的命令,slave断开期间,master的增量命令会保存在缓存中。当slave重连后,告知master断开时的offset,master会将后续的数据继续同步,从而完成了断点续传。

相关文章

  • 分布式Redis主备复制

    当数据落在不同节点上时,如何保证数据节点之间的一致性是非常关键的Redis采用主备复制的方式保证一致性,所有节点中...

  • 分布式Redis主备复制

    Redis采用主备复制的方式保证一致性,所有节点中,只有一个节点为主节点(master),它对外提供写服务,然后异...

  • redis-cluster部署

    redis cluster: 自动,master+slave复制和读写分离,master+slave高可用和主备切...

  • 主备和集群

    今天来聊聊,什么是主备,什么是集群,什么是节点 主备主备多用来数据库场景,比如:mysql主备,redis主备等等...

  • 分布式锁

    分布式锁需要解决下面问题 互斥性 续命(比如想延长redis锁的加锁时间) 锁释放 HA一致性(比如redis主备...

  • Redis之集群

    Redis集群是Redis提供分布式数据库方案,集群通过分片来进行数据库的共享,并提供复制和故障转移功能, 本文主...

  • MySQL主备复制

    binlog是MySQL实现主备复制的核心手段,简单来说MySQL主备复制实现分成三个步骤: Master将改变(...

  • Redis主复制集原理, redis-sentinel

    Redis主复制集(master-replicaset) 基于redis-sentinel实现自愈 监控 自动选主...

  • Redis主复制集原理, redis-sentinel

    Redis主复制集(master-replicaset) 基于redis-sentinel实现自愈 监控 自动选主...

  • redis系列(十一):实战

    本公司redis使用一主一备多从读写分离 一主一备是什么 备就是主的从库。正常情况下备是没有流量的。当主挂掉了,备...

网友评论

    本文标题:分布式Redis主备复制

    本文链接:https://www.haomeiwen.com/subject/kitprqtx.html