Redis 主从复制详解:实现高可用与数据备份
目录
引言
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 复制流程
-
建立连接:从节点通过
SLAVEOF命令或配置文件连接到主节点。 -
全量同步:从节点首次连接主节点时,主节点会生成一个 RDB 快照 并将其发送给从节点,从节点加载快照以初始化数据。
-
增量同步:主节点将后续的写操作以命令的形式发送给从节点,从节点执行这些命令以保持数据同步。
-
心跳检测:主从节点之间通过心跳机制保持连接,确保复制过程的稳定性。
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,一次完全同步(全量复制)将被自动执行
相关文章:
Redis 主从复制详解:实现高可用与数据备份
目录 引言 1. 什么是 Redis 主从复制? 1.1 定义 1.2 核心概念 2. Redis 主从复制的工作原理 2.1 复制流程 2.2 复制流程图 3. Redis 主从复制的配置方法 3.1 通过配置文件配置 主节点配置 从节点配置 3.2 通过命令行配置 设置从节点 取消从节点 4. Re…...
facebook游戏投广:提高广告关键数据的方法
在当今竞争激烈的数字营销领域,游戏广告的投放效果直接关系到游戏公司的市场表现和盈利能力。然而,许多游戏公司在广告投放上面临着诸多挑战,如高昂的成本、低效的转化率以及难以追踪的效果。那么,如何才能通过数据分析真正提升游…...
HybridCLR Generate All 报错UnityLinker.exe
现象: 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年省赛真题解题+心得分享
一,握手问题 这个题用点像小学奥数,直接手算就行 答案:1204 二,小球反弹 这个题思路简单,但是运行会显示超时。在思考思考,后续补代码。 三,好数 思路一: #include <iostream&…...
【Java】——数据类型和变量
个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录: 1.Java中的注释1.1.基本规则1.2.注释规范 2.标识符3.关键字4.字面常量5.数据类型6.变量6.1变量的概念6.2语法6.3整型变量6.3.1整型变量6.3.2长整…...
docker 安装常用镜像
我们在上篇文章中已经修改了daemon.json 安装镜像时如果search超时就直接pull 安装mysql docker pull mysql:5.7 启动命令 docker run --name mysql-docker -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 ocker run:运行docker容器命令 --name my…...
SpringMVC 基本概念与代码示例
1. SpringMVC 简介 SpringMVC 是 Spring 框架中的一个 Web 层框架,基于 MVC(Model-View-Controller) 设计模式,提供了清晰的分层结构,适用于 Web 应用开发 SpringMVC 主要组件 DispatcherServlet(前端控…...
MKS HA-MFV:半导体制造中的高精度流量验证技术解析
引言 在半导体先进制程(如3nm节点)中,工艺气体流量的精准控制直接决定刻蚀、沉积等关键步骤的均匀性和良率。MKS Instruments推出的 HA-MFV(High Accuracy Mass Flow Verifier) 通过创新设计解决了传统流量验证技术的…...
版本号标识
Visual Studio 16 2019 是 Microsoft Visual Studio 2019 的版本号标识。具体来说: Visual Studio 是微软提供的一款集成开发环境(IDE),用于开发各种应用程序,如桌面软件、Web 应用、移动应用等,支持多种编…...
基于Python实现手写数字识别
KNN实验——手写数字识别 实验目的: 实验内容: 实现最基本的KNN算法,使用trainingDigits文件夹下的数据,对testDigits中的数据进行预测。(K赋值为1,使用欧氏距离,多数投票决定分类结果&#…...
shell的模拟实现 ─── linux第16课
目录 第一版只能维护命令行参数表创建子进程, 执行非内建命令 第一版的执行结果: 第二版能维护命令行参数表执行cd命令 ,判断了是否是自建命令(mysell自己执行自建命令,可以对环境变量发生改变),子进程执行其他命令. 第二版执行结果: 第三版 模拟真实shell从系统文件中获取环…...
游戏引擎学习第153天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 目前正在进行的是一个比较大的系统调整,原本预计今天会继续深入这个改动,但实际上在昨天的开发中,我们已经完成了大部分的代码编写,并且运行之后几乎一切都能正常工作&#x…...
理解C语言中的extern关键字
在C语言编程中,extern关键字是一个非常重要的概念,尤其在多文件编程和全局变量的使用中。本文将详细解释extern的作用、用法以及常见的应用场景。 1. extern关键字的作用 extern关键字用于声明一个变量或函数是在其他文件中定义的。它告诉编译器&#x…...
【MyBatis Plus 逻辑删除详解】
文章目录 MyBatis Plus 逻辑删除详解前言什么是逻辑删除?MyBatis Plus 中的逻辑删除1. 添加逻辑删除字段2. 实体类的配置3. 配置 MyBatis Plus4. 使用逻辑删除5. 查询逻辑删除的记录 MyBatis Plus 逻辑删除详解 前言 MyBatis Plus 是一个强大的持久化框架…...
latex问题汇总
latex问题汇总 环境问题1 环境 texlive2024 TeXstudio 4.8.6 (git 4.8.6) 问题1 编译过程有如下错 ! Misplaced alignment tab character &. l.173 International Conference on Infrared &Millimeter Waves, 2004: 667--... I cant figure out why you would wa…...
基于Redis实现限流
限流尽可能在满足需求的情况下越简单越好! 1、基于Redsi的increment方法实现固定窗口限流 Redis的increment方法保证并发线程安全窗口尽可能越小越好(太大可能某一小段时间就打满请求剩下的都拿不到令牌了)这个原理其实就是用当前时间戳然后除窗口大小 在这个窗口大…...
力扣练习之确定两个字符串是否接近
目录 题目: 题解: 详细题解 题目: 如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb 操作 2࿱…...
大三下找C++开发实习的感受分享
目录 找实习的过程 阶段一:投简历 阶段二:准备面试 阶段三:面试中 阶段四:面试结束后 面试真题 总结 找实习的过程 阶段一:投简历 第一次找实习还是使用BOSS这个软件进行投简历,这个过程其实挺难说…...
基于hive的电信离线用户的行为分析系统
标题:基于hive的电信离线用户的行为分析系统 内容:1.摘要 随着电信行业的快速发展,用户行为数据呈现出海量、复杂的特点。为了深入了解用户行为模式,提升电信服务质量和精准营销能力,本研究旨在构建基于 Hive 的电信离线用户行为分析系统。通…...
Makefile——make工具编译STM32工程
一、Makefile相关指令 1.1、变量 符号含义替换追加:恒等于 1.2、隐含规则 符号含义%.o任意的.o文件*.o所有的.o文件 1.3、通配符 符号含义$^所有依赖文件$所有目标文件$<所有依赖文件的第一个文件 1.4、编译器指令常用参数功能说明 符号含义举例-E预处理,…...
Java EE 进阶:SpringBoot 配置⽂件
什么是配置文件 “配置文件”是一个用来保护程序或者系统设置信息的文件,它的作用是让程序在启动或者运行中,能够读取这些设置并按预期进行工作,而不需要手动的设置。 Spring Boot 配置文件 设置服务器端口、编码格式配置数据库连接控制日…...
【redis】五种数据类型和编码方式
文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串:Java 中的 String哈希:Java 中的 HashMap列表:Java 中的 List集合:Java 中的 Set有序集合:除了存 member 之外,还有…...
基于Python的电商销售数据分析与可视化系统实
一、系统架构设计 1.1系统流程图 #mermaid-svg-Pdo9oZWrVHNuOoTT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Pdo9oZWrVHNuOoTT .error-icon{fill:#552222;}#mermaid-svg-Pdo9oZWrVHNuOoTT .error-text{fill:#5…...
色板在数据可视化中的创新应用
色板在数据可视化中的创新应用:基于色彩感知理论的优化实践 引言 在数据可视化领域,色彩编码系统的设计已成为决定信息传递效能的核心要素。根据《Nature》期刊2024年发布的视觉认知研究,人类大脑对色彩的识别速度比形状快40%,色…...
EB-Cable许可管理中的数据安全与隐私保护
在数字化时代,数据安全与隐私保护已成为企业关注的重中之重。作为专业的电缆管理软件,EB-Cable许可管理不仅在功能丰富和操作便捷方面表现出色,更在数据安全与隐私保护方面为用户提供了坚实的保障。本文将详细介绍EB-Cable许可管理在数据安全…...
解决ubuntu(jetpack)系统下系统盘存储不够的
以下是可以安全清理的内容及操作步骤,按优先级和风险从低到高排序: 1. 清理日志文件(低风险) /var/log/syslog (7.1G) # 清空syslog文件(不删除文件本身) sudo truncate -s 0 /var/log/syslog# 或限制sys…...
【无人机路径规划】基于麻雀搜索算法(SSA)的无人机路径规划(Matlab)
效果一览 代码获取私信博主基于麻雀搜索算法(SSA)的无人机路径规划(Matlab) 一、算法背景与核心思想 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种受麻雀群体觅食行为启发的元启发式算法࿰…...
STM32_GPIO系统外设学习
按照STM32MCUWIKI、参考手册的外设介绍----->CubeF4的软件包中相关的Exmple代码----->CubeMX设置截图加深理解记忆 资料链接:嵌入式开发_硬软件的环境搭建 我的飞书文档-GPIO篇 如果觉得内容不错,欢迎给我的飞书文档点赞。同时如果有什么意见或…...
使用Java爬虫根据关键词获取衣联网商品列表:实战指南
在电商领域,通过关键词搜索商品并获取商品列表是常见的需求。衣联网作为知名的电商平台,提供了丰富的服装商品资源。本文将详细介绍如何使用Java编写爬虫程序,根据关键词获取衣联网商品列表,并确保爬虫行为符合平台规范。 一、环…...
【操作系统安全】任务1:操作系统部署
目录 一、VMware Workstation Pro 17 部署 二、VMware Workstation 联网方式 三、VMware 虚拟机安装流程 四、操作系统介绍 五、Kali 操作系统安装 六、Windows 系统安装 七、Windows 系统网络配置 八、Linux 网络配置 CSDN 原创主页:不羁https://blog.csd…...
