Redis7【⑥ Redis复制(replica)】

Redis复制是其核心功能,用于提高系统可用性和数据可靠性。文章详细介绍了如何配置Redis的主从复制,包括环境设置、配置文件修改和基本命令。主从复制是异步的,可能导致数据延迟,但能通过复制偏移量减少不一致。在主节点故障时,需要手动或通过集群进行故障转移。文章还提到了复制的缺点,如数据延迟、网络问题和内存消耗。
摘要由CSDN通过智能技术生成

Redis复制

Redis 复制(Replication)是 Redis 的一项核心功能,用于将一个 Redis 数据库的所有数据复制到另一个 Redis 实例上。Redis 复制可以提高系统的可用性、可靠性和扩展性,使得在发生故障时可以快速地恢复数据。

Redis 复制支持主从复制和从从复制两种方式,可以根据实际情况选择不同的方式来部署和管理 Redis 实例。

  • 主从复制

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ar3nRGvx-1687942030566)(img/2023-04-15_001017.png)]

  • 从从复制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2OxI7byY-1687942030567)(img/2023-04-15_001151.png)]


1. 环境配置

(1)克隆两个虚拟机,一主二仆,Redis设主节点,Redis1和Redis2设从节点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZJfjpWm-1687942030567)(img/2023-04-14_052056.png)]

(2)配置网络IP:
在这里插入图片描述

(3)关闭防火墙:
在这里插入图片描述

(4)修改redis.conf配置文件

这里我们直接把最纯净版的配置文件复制到我们之前自定义生成的 /myredis下面,命名加上端口号

  • 基础配置

在这里插入图片描述
pid 这里默认是给你写了端口号的文件,但是后续可能会用得到这里
在这里插入图片描述
aof 文件设置,非必须,老师这里演示就没有设置

在这里插入图片描述

  • 主要配置

这部分配从不配主!
在这里插入图片描述

2. 基本命令

从节点配置了需要连接的主节点后,打开Redis客户端即可自动连接到主节点。并且开始同步主节点的数据。
这里我们需要先主后从依次启动服务端 server,这里读取刚刚写好的配置文件,同时记得这次启动要写好端口号,要不然默认访问6379,而配置文件又没配置6379在哪。
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHAOd71j-1687942030572)(img/2023-04-14_113140.png)]

主从关系查看可以使用命令,或者读取我们刚刚写的日志文件

读取主机日志文件
在这里插入图片描述
读取从机日志文件
在这里插入图片描述

INFO REPLICATION:查看主从关系和配置信息

  • 查看主节点信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PN6Oc8hM-1687942030572)(img/2023-04-14_105932.png)]

  • 查看从节点信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-suHftq4P-1687942030572)(img/2023-04-14_110313.png)]

replicaof 主节点IP 主节点端口:配置需要连接的主节点IP和端口。一般写入进redis.conf文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fe2NOzKW-1687942030572)(img/2023-04-14_111840.png)]

slaveof 主节点IP 主节点端口:临时更换需要连接的主节点IP和端口。

这是一个临时的主从关系,每次与主节点断开后都需要重新配置。

在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原数据库的同步关系,开始和新配置的主数据库同步,并且清除原有的数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46mh8ph9-1687942030573)(img/2023-04-14_113853.png)]

将从节点redis2的追随的主节点更改为redis1后,查看redis1的信息:是redis的从节点,也是redis2的主节点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9HDYAdKl-1687942030573)(img/2023-04-14_114241.png)]

slaveof no one:停止当前从节点与主节点的的数据同步。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qSV9joyD-1687942030573)(img/2023-04-14_221538.png)]

3. 常见问题

  • slave可以执行写命令吗?

    slave不可以执行写命令。master负责写命令,slave负责读命令,当然master也可以读命令。

    即使slave是另一台slave的master,也不能执行写命令。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opgz8wqX-1687942030573)(img/2023-04-14_223633.png)]

  • slave是从头开始复制还是从切入点开始复制?

    在 Redis 复制中,从节点(Slave)可以选择从头开始复制或者从切入点开始复制。

    当从节点第一次连接主节点时,如果主节点没有持久化数据,从节点将从头开始复制。即主节点会将自己的全部数据发送给从节点,从节点将接收并保存全部数据。

    当从节点与主节点已经建立了连接,并且已经有了初始数据同步,如果从节点断开与主节点的连接后重新连接,从节点可以选择从上次同步的位置(复制偏移量)继续同步数据,这样可以避免从头开始复制所带来的性能影响和数据冗余。
    (master会检查backlog里面的offset,master和slave都会保存一个复制的offset和一个masterId)

    需要注意的是,如果从节点断开与主节点的连接时间过长,主节点可能已经自动执行了 BGSAVE 命令,生成了新的 RDB 文件,此时从节点需要从头开始复制。此外,如果从节点的内存不足,也可能需要从头开始复制,以避免内存溢出。

    比如master写到k3,slave启动后会同步k3及之前的数据,然后跟随master同步数据。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wrggmug4-1687942030574)(img/2023-04-14_235542.png)]

  • 主节点SHUTDOWN后,从节点会上位吗?

    主节点关闭后,从节点不会变成主节点,它们会等待主节点重新启动,但是从节点的数据可以正常读取。

    主节点重启后,主从关系依旧存在。

4. Redis复制流程

(1)从节点向主节点发送 SYNC 命令,请求全量复制。

(2)主节点接收到 SYNC 命令后,开始执行 BGSAVE 命令生成 RDB 文件,并在生成过程中记录所有执行的写命令。

(3)主节点在 BGSAVE 命令执行完毕后,将生成的 RDB 文件发送给从节点,同时将在执行 BGSAVE 命令期间记录的写命令发送给从节点,让从节点进行执行。

(4)从节点接收到主节点发送的 RDB 文件和写命令,并执行相应的操作来保持与主节点的数据一致。

(5)从节点持续监听主节点发来的新命令,并将其执行,以保持与主节点的数据同步。

(6)为了保持主节点和从节点之间的通信,master会发出PING包的周期默认是10秒:repl-ping-replica-period 10(在661行)

(6)当主节点发生故障时,从节点会尝试与其他主节点建立连接,并选举出一个新的主节点,从而成为新的从节点,保证系统的可用性和可靠性。

需要注意的是,Redis 复制是异步的,因此从节点可能存在数据不一致的情况。为了避免数据不一致,可以设置 Redis 的复制偏移量(replication offset),当从节点与主节点连接断开后,从节点可以通过该偏移量快速地同步数据。

5. Redis复制的缺点

在这里插入图片描述

(1)数据同步延迟:由于 Redis 复制是异步的,从节点的数据可能会与主节点存在一定的延迟,因此从节点可能无法实时获取到最新的数据

(2)单点故障:当主节点发生故障时,需要手动进行故障转移或者使用集群来保证系统的可用性

(3)网络通信问题:当网络出现故障或者通信延迟过高时,复制的效率会受到影响,从节点可能无法及时接收到主节点发送的数据

(4)内存消耗问题:当从节点处理不过来主节点发送过来的写命令时,从节点会自动触发执行全量复制,这会导致从节点内存消耗变大

(5)数据安全问题:当主节点的数据被误删或者篡改时,从节点也会受到影响,因此需要采取一定的措施来保证数据的安全性

需要注意的是,这些缺点并不是 Redis 复制本身的问题,而是分布式系统中常见的问题,需要根据实际情况进行综合考虑和处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值