首页 > 编程知识 正文

redis主从复制原理详解,redis查看主从状态

时间:2023-05-03 18:17:34 阅读:147456 作者:3138

Redis主从复制时,如何解决网络断开?

Reids的主从关系应该是众所周知的,但配置起来并不经常在日常工作中操作,这里就简单介绍一下主从关系的配置。

1:主从模式

在Redis中设置主从的方法很简单。 通常有以下两种。

通过在redis.conf配置文件中设置slaveof方法(永久); 如何直接在客户端上运行IP端口从属端(临时);2、主-从-从模式

主-从模式的配置也与上边的操作类似,但这里不太介绍。

了解主从一致性原理主从配置后,接下来进入正题。

在主从中,常规操作由主库用于写入数据,而从库中读取数据。 这样做的好处是避免了所有要求压力施加在主库中,也大大提高了系统的可伸缩性。

但是,发生了问题。 如果读取从库时的数据与主库相匹配,则必须在写入主库中的数据后将其同步到从库。 如何保持主库和从库的数据完整性? 另外,如果有多个从库,该怎么办呢?

1、全量复制

这是第一次同步时发生的事务关系。 通过名称可以看到,主库首次将所有数据无保留地传递到从库。

首先,让我们来看看它们是如何成为第一个关系的。 我觉得你歪了。

图中的同步过程很清楚,共分为三个部分。

(1)主从节点建立联系

当从节点首次与主节点建立连接时,从节点向主节点发送psync命令,指示将同步数据。

如您所见,psync命令后面有两个参数。 一个是runID,另一个是偏移偏移偏移。

**runID:**每个Redis实例生成的随机唯一ID。 此处显示主节点的ID。 **offset:**复制偏移量。 在图中首次复制时,不知道主库ID和偏移,因此“? 选项卡页面上创建或编辑条目。 “-1”分别表示runID和offset。

当主节点接收到psync命令时,它使用FULLSYNC命令将runID和offset参数发送到从节点。 从节点中保存该信息。

到此为止建立了关系。

(2)主节点同步RDB文件

RDB文件。 这是一张老脸,是持久化时使用的二进制文件。 在此发挥主从站的数据同步作用。 也就是说,主从同步依赖于RDB文件。

从节点接收RDB文件后,如果在本地完成数据加载,则表示主从同步已完成。

你来这里发现什么问题了吗?

想起RDB文件是如何生成的。 持久化的文章介绍了父进程fork了用于生成RDB文件的子进程。 父进程不会阻止处理客户端的命令。

问题是,当主节点向从节点发送RDB文件时,主节点该如何处理同时接收到的命令?

(3)主节点同步缓冲区命令

这是因为生成RDB文件后,父进程将解决写入命令同步问题。

为了确保主从节点的数据完整性,主节点使用缓冲区记录生成RDB文件后接收到的写入命令。 RDB文件发送完成后,将缓冲区命令发送到从节点并执行。

到此为止,主从节点的数据同步已完成。

2、级联操作

让我们回顾一下整个同步过程。 建立关系、生成RDB文件和从节点传输到最终缓冲区的命令将发送到从节点。 这是从节点和主节点同步的完整过程。

那么再想想吧。 有多个从站节点时,也就是一主多从站时,在最初连接时进行全量复制。 但是,在生成RDB文件时,父进程的fork子进程可能会出现块,或者在传输RDB文件时会消耗带宽,从而浪费资源。

我该怎么解决这种情况呢?

不知道文章开头的主-从-从模式是否还有印象。 通过重新构建从节点来建立从节点。 通过在数据同步时从级联的从节点进行同步,可以减轻主节点的压力。

网络开小差了

上述流程知道普通主从节点的复制过程,但如果网络断开,主从连接失败等异常情况下,主从同步如何进行?

这里提到增量复制中的名词。 与所有副本不同,它根据主从节点的偏移同步数据。

什么意思?

还记得在全量拷贝中我们提到的缓冲区吗? 用于存储生成RDB文件后的写入命令,此处称为缓冲区a。 主从节点断开后,后续写入命令将写入缓冲区a,同时也将写入另一个缓冲区b。

在缓冲器b中,主从节点分别保持偏移offset。 最初,主节点的写入位置和从节点的读取位置位于同一起点,随着主节点继续写入,偏移也逐渐增大。 同样,从节点复制后的偏移量也在增加。

当网络断开连接时,从节点不再进行同步,此时主节点由于不断接收新的写操作的偏移量会大于从节点的偏移量。当连接恢复时,从节点向主节点发送带有偏移量的psync 命令,主节点根据偏移量来进行比较,只需将未同步写命令同步给从节点即可。

总结

主从一致性原理

从节点第一次进行连接时,主节点会生成 RDB 文件进行全量复制,同时将新写入的命令存储进缓冲区,发送给从节点,从而保证数据一致性;为了减少数据同步给主节点带来的压力,可以通过从节点级联的方式进行同步。

网络开小差了

点会生成 RDB 文件进行全量复制,同时将新写入的命令存储进缓冲区,发送给从节点,从而保证数据一致性;

为了减少数据同步给主节点带来的压力,可以通过从节点级联的方式进行同步。

网络开小差了

网络断连重新连接后,主从节点通过分别维护的偏移量来同步写命令。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。