Redis 发生宕机时,数据怎样恢复?
当 Redis 发生宕机时,数据恢复的核心依赖于其持久化机制和备份策略。以下是结合不同场景的恢复方法及原理:
一、通过持久化机制恢复数据
1. RDB(Redis Database)快照恢复
- 原理:RDB 通过生成内存数据的全量快照(如
dump.rdb
文件)保存到磁盘。恢复时直接加载该文件到内存。 - 操作步骤:
- 定位最新的 RDB 文件(默认在 Redis 工作目录)。
- 将 RDB 文件复制到新实例的工作目录。
- 启动 Redis,自动加载 RDB 文件恢复数据。
- 优缺点:
- 优点:恢复速度快(二进制压缩文件),适合全量备份。
- 缺点:可能丢失最后一次快照后的数据(取决于快照频率)。
2. AOF(Append Only File)日志恢复
- 原理:AOF 记录所有写操作命令(如
appendonly.aof
文件),重启时重放命令重建数据。 - 操作步骤:
- 确保配置中
appendonly yes
开启。 - 将 AOF 文件复制到新实例的工作目录。
- 启动 Redis,自动重放 AOF 文件中的命令恢复数据。
- 确保配置中
- 写回策略:
- Always:每次写命令后同步磁盘(高可靠,性能低)。
- Everysec:每秒同步(平衡性能与可靠性)。
- No:由操作系统控制(高性能,数据丢失风险高)。
- AOF 重写:通过
BGREWRITEAOF
命令压缩日志,生成精简命令(如合并多次修改为最新值)。
3. 混合持久化(RDB + AOF)
- 原理:Redis 4.0+ 支持,先以 RDB 格式保存全量数据,后续增量命令以 AOF 追加。
- 优势:结合 RDB 的快速恢复和 AOF 的数据完整性,减少恢复时间与数据丢失风险。
- 配置:在
redis.conf
中启用aof-use-rdb-preamble yes
。
二、通过主从复制与集群恢复
1. 主从复制
- 原理:主节点数据实时同步到从节点。主节点宕机后,可手动将从节点提升为主节点。
- 操作步骤:
- 在从节点执行
REPLICAOF NO ONE
解除复制关系。 - 客户端切换至新主节点。
- 在从节点执行
2. Redis Sentinel(哨兵)
- 原理:哨兵监控集群状态,自动选举新主节点并通知客户端切换。
- 配置:在哨兵配置文件中定义监控的主节点和故障转移策略。
3. Redis Cluster
- 原理:数据分片存储在多个节点,宕机后自动迁移数据到其他节点。
- 恢复:重启故障节点后,集群自动同步数据。
三、手动恢复与备份策略
- 检查与修复文件:
- 使用
redis-check-aof
和redis-check-rdb
工具修复损坏的持久化文件。
- 使用
- 备份策略:
- 定期执行
BGSAVE
生成 RDB 快照。 - 结合云存储或外部工具(如
scp
、rsync
)备份持久化文件。
- 定期执行
- 无持久化时的恢复:
- 从后端数据库重新加载数据(可能造成数据库压力)。
四、关键注意事项
- 配置优化:
- 根据业务容忍度选择 RDB 快照频率(如
save 60 10000
表示 60 秒内 10000 次修改触发快照)。 - AOF 建议使用
appendfsync everysec
平衡性能与可靠性。
- 根据业务容忍度选择 RDB 快照频率(如
- 写时复制(COW)技术:
- RDB 生成快照时,通过 COW 机制允许主线程继续处理写操作,避免阻塞。
- 监控与告警:
- 监控磁盘空间、持久化文件生成状态,避免因磁盘满导致恢复失败。
总结
Redis 数据恢复的核心在于 持久化配置的合理性 和 备份策略的完备性。建议生产环境启用 混合持久化,并结合主从复制或集群实现高可用。定期验证备份文件有效性,并通过压力测试确保恢复流程的可靠性。
相关文章:

Redis 发生宕机时,数据怎样恢复?
当 Redis 发生宕机时,数据恢复的核心依赖于其持久化机制和备份策略。以下是结合不同场景的恢复方法及原理: 一、通过持久化机制恢复数据 1. RDB(Redis Database)快照恢复 原理:RDB 通过生成内存数据的全量快照&#…...

【02】RUST项目(Cargo)
文章目录 rust项目与编译创建项目检查编译运行各级目录文件作用TODO各文件作用Cargo.tomlCargo.lockRUST项目一些关键字`mod``pub``use` (`as`)`pub use`重导出(re-exporting)`crate``suer`模块系统包 Pcakagescrate模块 Modules 和 usemain.rs的例子`lib.rs`的例子拆分文件为…...

二、通义灵码插件保姆级教学-IDEA(使用篇)
一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。…...

Docker使用指南与Dockerfile文件详解:从入门到实战
Docker使用指南与Dockerfile文件详解:从入门到实战 文章目录 **Docker使用指南与Dockerfile文件详解:从入门到实战****引言****第一部分:Docker 核心概念速览****1. Docker 基础架构****2. Docker 核心命令****第二部分:Dockerfile 文件深度解析****1. Dockerfile 是什么?…...

前端权限控制和管理
前端权限控制和管理 1.前言2.权限相关概念2.1权限的分类(1)后端权限(2)前端权限 2.2前端权限的意义 3.前端权限控制思路3.1菜单的权限控制3.2界面的权限控制3.3按钮的权限控制3.4接口的权限控制 4.实现步骤4.1菜单栏控制4.2界面的控制(1)路由导航守卫(2)动态路由 4.3按钮的控制…...

网络安全讲座之一:网络安全的重要性
第一讲内容主要对于安全的发展以及其重要性作了简明的阐述,并介绍了一些国内外知名的网络安全相关网站,并对于如何建立有效的安全策略给出了很好的建议,并让大家了解几种安全标准。 媒体经常报道一些有关网络安全威胁的令人震惊的事件&am…...

iOS主要知识点梳理回顾-3-运行时消息机制
运行时(runtime) 运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很…...

深度学习中的Checkpoint是什么?
诸神缄默不语-个人CSDN博文目录 文章目录 引言1. 什么是Checkpoint?2. 为什么需要Checkpoint?3. 如何使用Checkpoint?3.1 TensorFlow 中的 Checkpoint3.2 PyTorch 中的 Checkpoint3.3 transformers中的Checkpoint 4. 在 NLP 任务中的应用5. 总…...

STM32开发笔记,编译与烧录
1. Keil开发环境 【Project】》【Manager】》【Pack Installer】选择相应的芯片,Unpack安装。 2. 编译 3. 烧录 烧录时,Boot0 为 1,Boot1 为 0。烧录后启动,Boot0 为 0 ,Boot 1 为 0。 3.1 ST-LINK烧录 测试连接&a…...

【CXX-Qt】1 CXX-Qt入门
与其他Qt-Rust绑定相比,CXX-Qt的目标不仅仅是将Qt功能暴露给Rust,而是完全将Rust集成到Qt生态系统中。我们将通过一个最小示例,展示如何使用CXX-Qt在Rust中创建自己的QObject,并将其与基于QML的小型GUI集成。 一、阅读前准备知识…...

JS宏进阶:XMLHttpRequest对象
一、概述 XMLHttpRequest简称XHR,它是一个可以在JavaScript中使用的对象,用于在后台与服务器交换数据,实现页面的局部更新,而无需重新加载整个页面,也是Ajax(Asynchronous JavaScript and XML)…...

物联网智能语音控制灯光系统设计与实现
背景 随着物联网技术的蓬勃发展,智能家居逐渐成为现代生活的一部分。在众多智能家居应用中,智能灯光控制系统尤为重要。通过语音控制和自动调节灯光,用户可以更便捷地操作家中的照明设备,提高生活的舒适度与便利性。本文将介绍一…...

hyperf知识问题汇总
1、简单说下 hyperf(什么是 hyperf) 答:hyperf 是一个依赖swoole扩展的 php 开源开发框架,它由黄朝辉团队设计创建维护,具备简洁而强大的组件和超强的并发性能,而且还支持微服务架构,例如&…...

制药行业 BI 可视化数据分析方案
一、行业背景 随着医药行业数字化转型的深入,企业积累了海量的数据,包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据,挖掘其价值,为企业决策提供支持,成为医药企业面临的重大挑战。在当今竞争激烈的…...

【SVN基础】
软件:ToritoiseSVN 代码版本回退:回退到上一个版本 问题:SVN版本已经提交了版本1和版本2,现在发现不需要版本2的内容,需要回退到版本1然后继续开发。 如图SVN版本已经提交到了107版本,那么本地仓库也已经…...

多项式插值(数值计算方法)Matlab实现
多项式插值(数值计算方法)Matlab实现 一. 原理介绍二. 程序设计1. 构建矩阵2. 求解矩阵方程3. 作出多项式函数4. 绘制插值曲线5. 完整代码 三. 图例 一. 原理介绍 关于插值的定义及基本原理可以参照如下索引 插值原理(数值计算方法ÿ…...

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程
[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索(DeepSeek)推出大模型DeepSeek-R1。 作为一款开源模型,R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版,并采用MI…...

android手机本地部署deepseek1.5B
手机本地部署大模型需要一个开源软件 Release Release v1.6.7 a-ghorbani/pocketpal-ai GitHub 下载release版本apk 它也支持ios,并且是开源的,你可以编译修改它 安装完后是这样的 可以下载推荐的模型,也可以在pc上下载好,然后copy到手机里 点 + 号加载本地模型...

理解UML中的四种关系:依赖、关联、泛化和实现
在软件工程中,统一建模语言(UML)是一种广泛使用的工具,用于可视化、设计、构造和文档化软件系统。UML提供了多种图表类型,如类图、用例图、序列图等,帮助开发者和设计师更好地理解系统的结构和行为。在UML中…...

机器学习 - 词袋模型(Bag of Words)实现文本情感分类的详细示例
为了简单直观的理解模型训练,我这里搜集了两个简单的实现文本情感分类的例子,第一个例子基于朴素贝叶斯分类器,第二个例子基于逻辑回归,通过这两个例子,掌握词袋模型(Bag of Words)实现文本情感…...

Kimi k1.5: Scaling Reinforcement Learning with LLMs
TL;DR 2025 年 kimi 发表的 k1.5 模型技术报告,和 DeepSeek R1 同一天发布,虽然精度上和 R1 有微小差距,但是文章提出的 RL 路线也有很强的参考意义 Paper name Kimi k1.5: Scaling Reinforcement Learning with LLMs Paper Reading Note…...

如何评估云原生GenAI应用开发中的安全风险(下)
以上就是如何评估云原生GenAI应用开发中的安全风险系列中的上篇内容,在本篇中我们介绍了在云原生AI应用开发中不同层级的风险,并了解了如何定义AI系统的风险。在本系列下篇中我们会继续探索我们为我们的云原生AI应用评估风险的背景和意义,并且…...

ASP.NET Core程序的部署
发布 不能直接把bin/Debug部署到生产环境的服务器上,性能低。应该创建网站的发布版,用【发布】功能。两种部署模式:“框架依赖”和“独立”。独立模式选择目标操作系统和CPU类型。Windows、Linux、iOS;关于龙芯。 网站的运行 在…...

《深度LSTM vs 普通LSTM:训练与效果的深度剖析》
在深度学习领域,长短期记忆网络(LSTM)以其出色的处理序列数据能力而备受瞩目。而深度LSTM作为LSTM的扩展形式,与普通LSTM在训练和效果上存在着一些显著的不同。 训练方面 参数数量与计算量:普通LSTM通常只有一层或较少…...

Spring依赖注入方式
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...

Photoshop自定义键盘快捷键
编辑 - 键盘快捷键 CtrlShiftAltK 把画笔工具改成Q , 橡皮擦改成W , 涂抹工具改成E , 增加和减小画笔大小A和S 偏好设置 - 透明度和色域 设置一样颜色 套索工具 可以自定义套选一片区域 Shiftf5 填充 CtrlU 可以改颜色/色相/饱和度 CtrlE 合并图层 CtrlShiftS 另存…...

解决VsCode的 Vetur 插件has no default export Vetur问题
文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…...

关于浏览器缓存的思考
问题情境 开发中要实现一个非原生pdf预览功能,pdf链接放在一个固定的后台地址,当重新上传pdf后,预览pdf仍然是上一次的pdf内容,没有更新为最新的内容。 查看接口返回状态码为 200 OK(from disk cache), 表示此次pdf返回…...

Vue3+element-plus表单重置resetFields方法失效问题
遇到的其中一种情况: bug:在当前页面直接筛选重置,重置方法生效;但先筛选,再切换别的页面,再切回原页面重置,重置无效(keep-alive的页面无此bug) 原因: 1.Vue…...

解释和对比“application/octet-stream“与“application/x-protobuf“
介绍 在现代 Web 和分布式系统的开发中,数据的传输和交换格式扮演着关键角色。为了确保数据在不同系统之间的传输过程中保持一致性,MIME 类型(Multipurpose Internet Mail Extensions)被广泛应用于描述数据的格式和内容类型。在 …...