Redis 主从复制详解:实现高可用与数据备份

news2025/5/17 2:40:32

目录

引言

1. 什么是 Redis 主从复制?

1.1 定义

1.2 核心概念

2. Redis 主从复制的工作原理

2.1 复制流程

2.2 复制流程图

3. Redis 主从复制的配置方法

3.1 通过配置文件配置

主节点配置

从节点配置

3.2 通过命令行配置

设置从节点

取消从节点

4. Redis 主从复制的使用场景

4.1 数据备份

4.2 读写分离

4.3 高可用性

4.4 数据分发

5. Redis 主从复制的优缺点

5.1 优点

5.2 缺点

6. Redis 主从复制的实际应用示例

7. Redis 主从复制的常见问题

7.1 数据延迟

7.2 主节点故障

7.3 数据不一致

8. Redis 主从复制的替代方案

9. 总结


引言

在现代分布式系统中,高可用性数据备份是两个至关重要的需求。Redis 作为一个高性能的内存数据库,提供了强大的 主从复制(Replication) 功能,能够有效提升系统的可用性和数据安全性。通过主从复制,Redis 可以将数据从主节点(Master)复制到一个或多个从节点(Slave),从而实现数据的冗余备份和读写分离。

本文将深入探讨 Redis 主从复制的原理、配置方法、使用场景以及常见问题,帮助读者全面理解并掌握这一功能。


1. 什么是 Redis 主从复制?

1.1 定义

Redis 主从复制是一种数据同步机制,允许将一个 Redis 实例(主节点)的数据复制到一个或多个 Redis 实例(从节点)。主节点负责处理写操作,而从节点负责复制主节点的数据,并提供读操作。

1.2 核心概念

  • 主节点(Master):负责处理写操作,并将数据同步到从节点。

  • 从节点(Slave):复制主节点的数据,并提供读操作。

  • 复制流(Replication Stream):主节点将写操作以命令的形式发送给从节点,从节点执行这些命令以保持数据一致性。


2. Redis 主从复制的工作原理

2.1 复制流程

  1. 建立连接:从节点通过 SLAVEOF 命令或配置文件连接到主节点。

  2. 全量同步:从节点首次连接主节点时,主节点会生成一个 RDB 快照 并将其发送给从节点,从节点加载快照以初始化数据。

  3. 增量同步:主节点将后续的写操作以命令的形式发送给从节点,从节点执行这些命令以保持数据同步。

  4. 心跳检测:主从节点之间通过心跳机制保持连接,确保复制过程的稳定性。

2.2 复制流程图


3. Redis 主从复制的配置方法

配从库不配主库

3.1 通过配置文件配置

在 Redis 配置文件中,可以通过以下参数配置主从复制:

主节点配置

# 主节点无需特殊配置

从节点配置

# 设置主节点的 IP 和端口
replicaof <master-ip> <master-port>

# 如果主节点需要认证,设置主节点的密码
masterauth <master-password>

每次与 master 断开之后,都需要重新连接,除非你配置进 redis.conf 文件

3.2 通过命令行配置

在 Redis 运行时,可以通过 SLAVEOF 命令动态配置主从复制:

设置从节点

# 设置从节点的主节点
SLAVEOF <master-ip> <master-port>

取消从节点

# 取消从节点的主节点
SLAVEOF NO ONE

4. Redis 主从复制的使用场景

4.1 数据备份

通过主从复制,可以将主节点的数据复制到从节点,从而实现数据的冗余备份。如果主节点发生故障,可以从从节点恢复数据。

4.2 读写分离

主节点负责处理写操作,而从节点可以处理读操作,从而分担主节点的负载,提升系统的整体性能。

4.3 高可用性

通过主从复制,可以实现 Redis 的高可用性。如果主节点发生故障,可以将从节点提升为新的主节点,从而保证系统的持续运行。

4.4 数据分发

通过主从复制,可以将数据分发到多个从节点,从而实现数据的分布式存储和访问。


5. Redis 主从复制的优缺点

5.1 优点

  • 数据冗余:通过复制实现数据的冗余备份,提高数据的安全性。

  • 读写分离:从节点可以处理读操作,分担主节点的负载。

  • 高可用性:通过主从切换实现高可用性。

  • 扩展性:可以通过增加从节点扩展系统的读能力。

5.2 缺点

  • 数据延迟:从节点的数据可能存在延迟,无法实时同步。

  • 写性能瓶颈:主节点需要处理所有写操作,可能成为性能瓶颈。

  • 故障切换复杂:主节点故障时,需要手动或通过工具进行主从切换。

6. Redis 主从复制的实际应用示例

准备工作:我们配置主从复制,至少需要三个,一主二从!配置三个客户端!

1、拷贝多个redis.conf 文件

2、指定端口 6379,依次类推

3、开启daemonize yes

4、Pid文件名字 pidfile /var/run/redis_6379.pid , 依次类推

5、Log文件名字 logfile "6379.log" , 依次类推

6、Dump.rdb 名字 dbfilename dump6379.rdb , 依次类推 

上面都配置完毕后,3个服务通过3个不同的配置文件开启,我们的准备环境就OK 了! 

一主二从

1、环境初始化

默认三个都是Master 主节点

2、配置为一个Master 两个Slave

3、在主机设置值,在从机都可以取到!从机不能写值!

7. Redis 主从复制的常见问题

7.1 数据延迟

从节点的数据可能存在延迟,无法实时同步。可以通过以下方法减少延迟:

  • 优化网络:确保主从节点之间的网络连接稳定。

  • 增加从节点:通过增加从节点分担读操作,减少主节点的负载。

7.2 主节点故障

如果主节点发生故障,需要手动或通过工具进行主从切换。可以使用 Redis Sentinel 或 Redis Cluster 实现自动故障切换。

7.3 数据不一致

如果主从节点之间的网络中断,可能导致数据不一致。可以通过以下方法解决:

  • 全量同步:从节点重新连接主节点时,会进行全量同步以恢复数据一致性。

  • 监控工具:使用监控工具检测主从节点的数据一致性。


8. Redis 主从复制的替代方案

虽然 Redis 主从复制功能强大,但在某些场景下可能需要更高级的功能(如自动故障切换、分布式存储等)。以下是一些常见的替代方案:

  • Redis Sentinel:提供自动故障切换和监控功能,适合高可用性场景。

  • Redis Cluster:提供分布式存储和自动分片功能,适合大规模数据存储场景。


9. 总结

Redis 主从复制是一种高效、简单的数据同步机制,适用于数据备份、读写分离、高可用性等场景。尽管它存在数据延迟和故障切换复杂的缺点,但在许多场景中仍然表现出色。

拓展:

1.层层链路

上一个Slave 可以是下一个slave 和 Master,Slave 同样可以接收其他 slaves 的连接和同步请求,那么 该 slave 作为了链条中下一个的master,可以有效减轻 master 的写压力!

 

测试:6379 设置值以后 6380 和 6381 都可以获取到!OK!

2.谋朝篡位

一主二从的情况下,如果主机断了,从机可以使用命令 SLAVEOF NO ONE 将自己改为主机!这个时候其余的从机链接到这个节点。对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。

主机再回来,也只是一个光杆司令了,从机为了正常使用跑到了新的主机上!

 复制原理

Slave 启动成功连接到 master 后会发送一个sync命令

Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行 完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

facebook游戏投广:提高广告关键数据的方法

在当今竞争激烈的数字营销领域&#xff0c;游戏广告的投放效果直接关系到游戏公司的市场表现和盈利能力。然而&#xff0c;许多游戏公司在广告投放上面临着诸多挑战&#xff0c;如高昂的成本、低效的转化率以及难以追踪的效果。那么&#xff0c;如何才能通过数据分析真正提升游…

HybridCLR Generate All 报错UnityLinker.exe

现象&#xff1a; Generate All 报错 Building Library\Bee\artifacts\Android\ManagedStripped failed with output: E:\XingJiKongLong\HybridCLRData\LocalIl2CppData-WindowsEditor\il2cpp\build\deploy\UnityLinker.exe Library\Bee\artifacts\rsp\10776760506222613018.…

大一新生备战蓝桥杯c/c++B组——2024年省赛真题解题+心得分享

一&#xff0c;握手问题 这个题用点像小学奥数&#xff0c;直接手算就行 答案&#xff1a;1204 二&#xff0c;小球反弹 这个题思路简单&#xff0c;但是运行会显示超时。在思考思考&#xff0c;后续补代码。 三&#xff0c;好数 思路一&#xff1a; #include <iostream&…

【Java】——数据类型和变量

个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录&#xff1a; 1.Java中的注释1.1.基本规则1.2.注释规范 2.标识符3.关键字4.字面常量5.数据类型6.变量6.1变量的概念6.2语法6.3整型变量6.3.1整型变量6.3.2长整…

SpringMVC 基本概念与代码示例

1. SpringMVC 简介 SpringMVC 是 Spring 框架中的一个 Web 层框架&#xff0c;基于 MVC&#xff08;Model-View-Controller&#xff09; 设计模式&#xff0c;提供了清晰的分层结构&#xff0c;适用于 Web 应用开发 SpringMVC 主要组件 DispatcherServlet&#xff08;前端控…

MKS HA-MFV:半导体制造中的高精度流量验证技术解析

引言 在半导体先进制程&#xff08;如3nm节点&#xff09;中&#xff0c;工艺气体流量的精准控制直接决定刻蚀、沉积等关键步骤的均匀性和良率。MKS Instruments推出的 HA-MFV&#xff08;High Accuracy Mass Flow Verifier&#xff09; 通过创新设计解决了传统流量验证技术的…

基于Python实现手写数字识别

KNN实验——手写数字识别 实验目的&#xff1a; 实验内容&#xff1a; 实现最基本的KNN算法&#xff0c;使用trainingDigits文件夹下的数据&#xff0c;对testDigits中的数据进行预测。&#xff08;K赋值为1&#xff0c;使用欧氏距离&#xff0c;多数投票决定分类结果&#…

shell的模拟实现 ─── linux第16课

目录 第一版只能维护命令行参数表创建子进程, 执行非内建命令 第一版的执行结果: 第二版能维护命令行参数表执行cd命令 ,判断了是否是自建命令(mysell自己执行自建命令,可以对环境变量发生改变),子进程执行其他命令. 第二版执行结果: 第三版 模拟真实shell从系统文件中获取环…

游戏引擎学习第153天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 目前正在进行的是一个比较大的系统调整&#xff0c;原本预计今天会继续深入这个改动&#xff0c;但实际上在昨天的开发中&#xff0c;我们已经完成了大部分的代码编写&#xff0c;并且运行之后几乎一切都能正常工作&#x…

Java EE 进阶:SpringBoot 配置⽂件

什么是配置文件 “配置文件”是一个用来保护程序或者系统设置信息的文件&#xff0c;它的作用是让程序在启动或者运行中&#xff0c;能够读取这些设置并按预期进行工作&#xff0c;而不需要手动的设置。 Spring Boot 配置文件 设置服务器端口、编码格式配置数据库连接控制日…

【redis】五种数据类型和编码方式

文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串&#xff1a;Java 中的 String哈希&#xff1a;Java 中的 HashMap列表&#xff1a;Java 中的 List集合&#xff1a;Java 中的 Set有序集合&#xff1a;除了存 member 之外&#xff0c;还有…

色板在数据可视化中的创新应用

色板在数据可视化中的创新应用&#xff1a;基于色彩感知理论的优化实践 引言 在数据可视化领域&#xff0c;色彩编码系统的设计已成为决定信息传递效能的核心要素。根据《Nature》期刊2024年发布的视觉认知研究&#xff0c;人类大脑对色彩的识别速度比形状快40%&#xff0c;色…

【无人机路径规划】基于麻雀搜索算法(SSA)的无人机路径规划(Matlab)

效果一览 代码获取私信博主基于麻雀搜索算法&#xff08;SSA&#xff09;的无人机路径规划&#xff08;Matlab&#xff09; 一、算法背景与核心思想 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种受麻雀群体觅食行为启发的元启发式算法&#xff0…

STM32_GPIO系统外设学习

按照STM32MCUWIKI、参考手册的外设介绍----->CubeF4的软件包中相关的Exmple代码----->CubeMX设置截图加深理解记忆 资料链接&#xff1a;嵌入式开发_硬软件的环境搭建 我的飞书文档-GPIO篇 如果觉得内容不错&#xff0c;欢迎给我的飞书文档点赞。同时如果有什么意见或…

【操作系统安全】任务1:操作系统部署

目录 一、VMware Workstation Pro 17 部署 二、VMware Workstation 联网方式 三、VMware 虚拟机安装流程 四、操作系统介绍 五、Kali 操作系统安装 六、Windows 系统安装 七、Windows 系统网络配置 八、Linux 网络配置 CSDN 原创主页&#xff1a;不羁https://blog.csd…

下载安装启动 VMware 个人免费版本

一、进入官网并登录账号下载软件 进入官网 [ https://www.vmware.com ]&#xff0c;点击Products&#xff0c;将页面划到最底下&#xff0c;点击 “SEE DESKTOP HYPERVISORS”按钮。 然后点击 Desktop hypevisor &#xff0c;会出现如下界面&#xff0c;可以根据自己的操作系…

C#+AForge 实现视频录制

C#AForge 实现视频录制 ​ 在C#中&#xff0c;使用AForge 库实现视频录制功能是一个比较直接的过程。AForge 是一个开源的.NET框架&#xff0c;提供了许多用于处理图像和视频的类库。 开发步骤 安装AForge库 ​ 首先&#xff0c;确保你的项目中已经安装了 AForge.Video和AFo…

SAP SD学习笔记31 - 销售BOM

上一篇讲 前受金处理(预付款处理)。 SAP SD学习笔记29 - 前受金处理(预收款处理)_fplt 付款申请与sd 数据表的关联关系-CSDN博客 本章继续讲SAP SD模块的其他知识&#xff1a;销售BOM。 销售BOM在现场还是会用到的。 目录 1&#xff0c;销售BOM概要 2&#xff0c;受注BOM的…

大数据学习(63)- Zookeeper详解

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91e; &#x1f…

嵌入式八股C语言---面向对象篇

面向对象与面向过程 面向过程 就是把整个业务逻辑分成多个步骤,每步或每一个功能都可以使用一个函数来实现面向对象 对象是类的实例化,此时一个类就内部有属性和相应的方法 封装 在C语言里实现封装就是实现一个结构体,里面包括的成员变量和函数指针,然后在构造函数中,为结构体…