美文网首页
Redis 主从同步

Redis 主从同步

作者: AD刘涛 | 来源:发表于2020-10-12 13:35 被阅读0次

高可用

我们总说的 Redis具有高可靠性,我们要如何理解呢?其实,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断

AOFRDB 保证了前者,而对于后者Redis 的做法就是增加副本冗余量,将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一段时间才能恢复,其他实例也可以对外提供服务,不会影响业务使用。

主从复制

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

  • 读操作:主库、从库都可以接收;
  • 写操作:首先到主库执行,然后,主库将写操作同步给从库。
################################# REPLICATION #################################

# Master-Slave replication. Use slaveof to make a Redis instance a copy of
# another Redis server. A few things to understand ASAP about Redis replication.
#
# 1) Redis replication is asynchronous, but you can configure a master to
#    stop accepting writes if it appears to be not connected with at least
#    a given number of slaves.
# 2) Redis slaves are able to perform a partial resynchronization with the
#    master if the replication link is lost for a relatively small amount of
#    time. You may want to configure the replication backlog size (see the next
#    sections of this file) with a sensible value depending on your needs.
# 3) Replication is automatic and does not need user intervention. After a
#    network partition slaves automatically try to reconnect to masters
#    and resynchronize with them.
#
# slaveof <masterip> <masterport>

# If the master is password protected (using the "requirepass" configuration
# directive below) it is possible to tell the slave to authenticate before
# starting the replication synchronization process, otherwise the master will
# refuse the slave request.
#
# masterauth <master-password>

主从库模式一旦采用了读写分离,所有数据的修改只会在主库上进行,不用协调三个实例。主库有了最新的数据后,会同步给从库,这样,主从库的数据就是一致的。

当我们启动多个 Redis 实例的时候,它们相互之间就可以通过 replicaof(Redis 5.0 之前使用 slaveof)命令形成主库和从库的关系,之后会按照三个阶段完成数据的第一次同步。

实现原理

一主一从

假设当前我们有两台,分别为实例 1(ip:192.168.1.3)和实例 2(ip:192.168.1.4),我们在实例 2 上执行以下这个命令后,实例 2 就变成了实例 1 的从库,并从实例 1 上复制数据:

slaveof  192.168.1.3 6379

以上实现存在哪些弊端 ?

通过分析主从同步的原理,你可以看到,一次全量复制中,对于主库来说,需要完成两个耗时的操作:生成 RDB 文件和传输 RDB 文件如果从库数量很多,而且都要和主库进行全量复制的话,就会导致主库忙于 fork 子进程生成 RDB 文件,进行数据全量同步。fork 这个操作会阻塞主线程处理正常请求,从而导致主库响应应用程序的请求速度变慢。此外,传输 RDB 文件也会占用主库的网络带宽,同样会给主库的资源使用带来压力。那么,有没有好的解决方法可以分担主库压力呢?

一主多从

在刚才介绍的主从库模式中,所有的从库都是和主库连接,所有的全量复制也都是和主库进行的。现在,我们可以通过“主 - 从 - 从”模式将主库生成 RDB 和传输 RDB 的压力,以级联的方式分散到从库上。简单来说,我们在部署主从集群的时候,可以手动选择一个从库(比如选择内存资源配置较高的从库),用于级联其他的从库。然后,我们可以再选择一些从库(例如三分之一的从库),在这些从库上执行如下命令,让它们和刚才所选的从库,建立起主从关系。

slaveof 所选从库的IP 6379

一旦主从库完成了全量复制,它们之间就会一直维护一个网络连接,主库会通过这个连接将后续陆续收到的命令操作再同步给从库,这个过程也称为基于长连接的命令传播,可以避免频繁建立连接的开销。

相关文章

  • Redis持久化、主从复制

    Redis持久化、主从复制 [TOC] redis持久化 RDB & AOP redis主从同步策略 一、pers...

  • redis 主从同步-slave端

    redis 主从命令  redis的主从同步始于命令SLAVEOF host port,通过这个命令能够建立主从关...

  • Redis系列之:Redis主从同步,读写分离

    1. Redis主从同步 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/...

  • redis 主从同步-master端

    redis 主从同步master端处理  redis 主从同步的过程始于一系列类似tcp三次握手的过程,归于"sy...

  • redis缓存服务

    1.redis master-slave同步详细过程 Redis 支持主从复制分为全量同步和增量同步, 首次同步是...

  • redis 基于sentinel实现主从架构的高可用

    redis主从复制原理 1、配置redis主 2、配置redis从(多个从节点配置方法相同) 3、验证主从数据同步...

  • Redis高可用架构之主从同步

    CAP原理 最终一致性 Redis提供的同步机制 主从同步 丛丛同步 缓解master节点的压力 Redis的同步...

  • Redis 数据同步机制

    Redis的主从同步机制可以确保redis的master和slave之间的数据同步。Redis在2.8及以上版本使...

  • redis-3

    redis-3 redis高可用 redis主从同步 全量同步 步骤: 主服务器开启BG SAVE写RDB文件 主...

  • Redis 主从同步

    同步过程 Redis 支持主从复制分为全量同步和增量同步,首次同步是全量同步,主从同步可以让从服务器从 主服务器备...

网友评论

      本文标题:Redis 主从同步

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