redis之(十四)redis的主从复制的原理

  • 时间:
  • 浏览:3
  • 来源:彩神大发幸运飞艇_神彩大发幸运飞艇官方

二:redis主从克隆技术原理中的重要间题。

第二步:同步过程

--->无硬盘克隆技术。

--->主数据库不持久化,从数据库持久化。

  ==>积压队列的大小配置:repl-backlog-size指定(默认1mb),

第好2个 :主从数据库能并能实现读写分离的业务场景吗?

第好2个 多多多:主redis和从redis的数据同步是异步还是同步?

(2)主redis在克隆技术过程(生成快照RDB)的快照文件时,全是往硬盘上写,只要直接通过内存传输给从redis数据库。目前2.8版本随能并能并能通过配置文件开启这名模式,属于测试实验阶段。repl-diskless-sync yes选项启动。

--->min-slaves-to-write 参数里面的数字n,是保证当大概 有n台及n台以上的从redis和主redis正常连接,主redis才会对外提供写服务。

第好2个 :当主redis收到写命令,在向从redis发送同步的命令前,主从redis网络断连,何如处理。

--->当从redis把快照文件和缓存命令写后后 ,会根据从的配置文件(dir和dbfilename好2个 多多多参数选择),将临时文件替代RDB文件。并把命令执行。从而达到主从redis内容一致。

--->增量克隆技术。

(2)实现增量克隆技术的基础

--->读写分离实现读多写少的场景

(1)为什么会么会让会所处,主宕机重启后,可能不持久化,无数据记录,一块儿把从的数据也清空了的隐患。这名主从形态,须要先将好2个 多多多从升级为主,再启动旧的主数据库.

(3)实现增量克隆技术的过程

第一步:克隆技术初始化

--->好2个 多多多配置参数:min-slaves-to-write 和min-slaves-max-lag

(1)目标:主从redis断连后,主redis不须要每次都实现详细数据的快照和命令缓存,去与失联的重新联系上的从redis进行同步。只要只同步失联期间的数据变化,从而提升性能。

--->redis提供两种限制策略。来处理主从断连后,主redis无法得知另一方的写命令,否有有都详细发送给从redis

  ==>从数据库须要主数据库进行克隆技术的后后 ,2.8版本后,从redis会发送[PSYNC+主redis运行id+断开前最新的命令偏移量]给主redis

(1)目的是:减少硬盘读写,提升性能。

3.注意点:当开启克隆技术且主redis数据库关闭持久化功能时,一定并非使用Supervisor以及类似的系统进程管理工具令主数据库崩溃后自动重启,也处理在未将某一台从redis升级为主redis前手动重启旧的主redis,可能旧的redis启动后,可能这么 持久化,数据库中的数据是空的,就会将所有的从redis节点也同步成空的。

--->redis2.6版本后后 ,每次重练,就须要快照文件和缓存命令进行一次详细同步,从头再来一遍,当数据量大的后后 ,同步速率单位会很低下。

--->既然是异步,就会所处好2个 多多多主从redis数据不一致的时间窗口。

--->两种方案:(1)手动恢复(2)哨兵策略

--->这名形态,保证了网络分区下主从数据不一致。默认该形态是关闭的。

--->主redis收到SYNC命令后,开始英文英语 在后台保存快照文件(即RDB持久化的过程),并将保存快照期间接收到的命令缓存起来。

--->克隆技术同步阶段会贯穿整个主从同步过程的始终,直到主从关系终止为止。

--->能并能实现

三:redis的分布式形态

--->手动恢复

  ==>可能从redis传来的主redis的运行id和另一方的运行id不相同,可能,运行id相同,为什么会么会让偏移量没哟主redis的积压队列里。则进行全量克隆技术。(生成快照文件+缓存命令)

  ==>积压队列的释放时间:repl-backlog-ttl指定。即当有从redis和主redis断连开始英文英语 ,经太大长时间释放积压队列的内存空间。默认1小时。

第好2个 :从redis挂掉,重启,主redis会将数据同步给从redis。这么 主redis挂掉,为什么会么会实现数据的恢复以及集群继续对外提供写服务?

1.在从数据中使用SLAVEOF NO ONE命令将从redis数据库升级成主数据库继续对外提供服务。

  ==>从redis会存储主redis的运行ID(run id)。每个redis实例均会拥有好2个 多多多唯一的运行ID .每当实例重启后,就会自动生成好2个 多多多新的运行ID

2.启动后后 崩溃的主redis,为什么会么会让使用SLAVEOF命令将其设置为新主redis的从数据库,从而可将数据同步回来。

--->当从redis发送SYNC后,接受到快照文件(RDB)和缓存命令后,将内容写到硬盘上的临时文件

  ==>主redis接收到命令后,判断传送过来的主redis运行id和另一方的运行id否有有相同。一块儿判断传来的断开前最新的命令偏移量,否有有在自身的积压队列里面。可能所处,则从自身的积压队列里决定克隆技术2个命令给从redis,进而实现增量克隆技术。

  ==>在克隆技术同步阶段,主redis每将好2个 多多多命令传送给从redis时,时会一块儿把该命令存放进去好2个 多多多积压队列(backlog)中,并记录下当前积压队列存放命令的偏移量范围。

--->redis2.8版本后后 ,新策略。并能支持[有条件的]增量数据传输,只须要将失联期间的这么 同步的命令进行传输就ok了。

一:redis主从克隆技术的原理,步骤。

  ==>从redis接收到主redis传来的命令时,也会记录下该命令的偏移量。

--->当主redis完成快照后,主redis会将快照文件和缓存命令发送给从redis。克隆技术初始化开始英文英语 。

下图为模拟主从克隆技术过程。

--->min-slaves-max-lag 参数里面的数字m(单位:秒),主redis和从redis最长的失联时间。当从redis最后与主redis联系(即发送REPLCONF ACK命令)的时间到当前时间的差值,小于这名m。则主redis认为主从连接正常,对外提供写服务。一旦大于这名值,则表示有从redis断连,而不与外界提供写操作。

--->redis的主从克隆技术,叫乐观克隆技术。是异步的。容忍在一定时间内主从数据库的内容是不同的。为什么会么会让两者的数据最终会同步。

--->从redis启动后,会根据配置,向主redis发送SYNC命令。2.8版本后后 ,发送PSYNC命令。

--->当主redis的克隆技术初始化开始英文英语 后,主redis每当收到写命令就会异步将写命令,发送给从redis

第好2个 多多多:主从断连,重新连接上后,主从是为什么会么会实现数据的同步。