导读

RDB 和 AOF 对比:

持久化方式选择

如果对数据安全性要求极高,应该同时使用两种持久化方式。

如果可以承受若干时间内的数据丢失,可以只使用 RDB 持久化。

不建议只使用 AOF 持久化,因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份,并且 RDB 恢复数据集的速度要比 AOF 恢复的速度要快。

RDB 和 AOF 的恢复优先级

如果 Redis 同时使用 RDB 和 AOF 持久化,Redis 会优先使用 AOF 进行恢复数据。

在启动 Redis 时,如果已经存在了 appendonly.aof 文件,则基于 appendonly.aof 文件恢复数据;如果不存在 appendonly.aof 文件,则创建一个空的 appendonly.aof 文件,并基于这个空的 appendonly.aof 文件启动。

redis开启rdb和aof后文件正确恢复

正是由于以上的特性,在使用 RDB 恢复数据并切换为使用 RDB + AOF 持久化时需要特别小心,以避免造成数据丢失。现在我需要同时开启aof和rdb两个持久化策略,假如我们直接关闭redis,并且打开aof的开关,此时我们重连redis,会发现上一次保存的数据不见了。

appendonly.aof + dump.rdb,优先用appendonly.aof去恢复数据,但是我们发现redis自动生成的appendonly.aof是没有数据的然后我们自己的dump.rdb是有数据的,但是明显没用我们的数据。很简单,就是虽然你删除了appendonly.aof,但是因为打开了aof持久化,redis就一定会优先基于aof去恢复,即使文件不在,那就创建一个新的空的aof文件。

在数据安全丢失的情况下,基于rdb冷备,如何完美的恢复数据,同时还保持aof和rdb的双开?
正确的做法应该是:

  • 停止 Redis,关闭 AOF 持久化,保留 RDB 持久化,防止启动时生成 appendonly.aof 文件;
  • 拷贝 RDB 文件到数据目录,启动 Redis,启动后 Redis 会使用 RDB 文件恢复数据;
  • 确认数据恢复,在命令行热修改配置开启 AOF 持久化 config set appendonly yes
  • 等待 Redis 将内存中的数据写入 appendonly.aof 文件,此时 RDB 和 AOF 数据已同步;
  • 停止 Redis,修改配置文件开启 AOF 持久化和 RDB 持久化
  • 启动 Redis,数据恢复和持久化配置完成。

aof文件损坏

那假如aof文件损坏,如何使用rdb文件恢复呢?
我们先删除aof文件,关闭aof配置,再启动redis:发现数据已经恢复(此时是使用rdb来恢复的),并且appendonly.aof文件也没有。此时,我们在redis的客户端执行命令:

 config set appendonly yes

打开aof,此时在aof文件的位置就会生成appendonly.aof文件
注意:在执行启动aof命令的时候,需要在所有的主节点全部执行,此命令只会在执行命令的节点生效。
最后,重启redis,发现数据全部恢复正常,持久化方式也变成了rdb和aof同时执行。

Redis RDB 和 AOF相关推荐

  1. Redis RDB、AOF持久化详解

    概述 Redis 提供了2种不同的持久化方式,分别为RDB和AOF RDB能够定时地对数据进行快照存储,因为是定时的,所以服务宕机时存在丢失数据的风险 AOF能够记录每一次的写操作,当服务重启的时候会 ...

  2. Redis RDB与AOF持久化详解

    为什么要有RDB和AOF? Redis数据库基于内存储存数据,而内存的缺点就是当服务器挂掉了,数据就没了. 所以Redis需要持久化来恢复数据,而持久化的方式就有RDB和AOF Redis 持久化 R ...

  3. Redis RDB和AOF总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.RDB 1. RDB是redis内存到硬盘的快照,用于持久化 2.save通常会阻塞Redis 3.bgsave不会阻塞r ...

  4. redis的持久化方式RDB和AOF的区别

    https://blog.csdn.net/m0_38110132/article/details/76906422 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITe ...

  5. Redis持久化 - RDB和AOF

    一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 持久化Redis所有数据保持在内存中,对数据的更新将异步地保 ...

  6. Redis的持久化开启了RDB和AOF下重启服务是如何加载的?(10个人9个回答错误)

    互联网面试题更新了!随便呈上几道,看看大家能否答出来: redis为什么是key,value的,为什么不是支持SQL的? redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看) r ...

  7. quartz持久化是指_面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析

    从这篇文章开始,我们来介绍Redis高可用相关的机制.Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 这篇文章我们先介绍Redis的高可用保障的基础:数据 ...

  8. redis php 持久化,详解Redis RDB持久化、AOF持久化,

    详解Redis RDB持久化.AOF持久化, 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永 ...

  9. Redis提供的持久化机制(RDB和AOF)

    Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却 ...

最新文章

  1. 高效搭建Storm全然分布式集群
  2. Web APi之过滤器执行过程原理解析【二】(十一)
  3. 在springboot项目中如何创建子项目
  4. 《最终幻想7 重制版》DEMO体验:讨论ATB战斗系统的一些问题
  5. vim下更省心地用中文
  6. php调用谷歌翻译接口_一个google翻译的php调用方式
  7. 诗与远方:无题(三十四)- 曾经写给妹子的一首诗
  8. js判断是否以xxx结尾
  9. Verilog实现2分频实例
  10. 产业链人士:台积电将同设备及原材料供应商谈判,希望明年降价15%
  11. XP-SP3 安装之后怎么禁止更新
  12. 【面试题】同学的面经
  13. Vue将汉字转为拼音,取出首字母
  14. 我国标准时间授时方法
  15. 支付宝手机网站H5支付
  16. 微信小程序 选择器 picker ;demo大全附效果图
  17. 气不足则胖,血不足则瘦
  18. WordPress清理和优化数据库,推荐几个优秀插件
  19. python语言入门(一)
  20. 香农编码的C++实现及求平均码长和编码效率

热门文章

  1. 微信小程序:errMsg“:“navigateTo:fail can not navigateTo a tabbar page 报错问题
  2. HTC VIVE开发教程(五)
  3. 公司中午开了周年庆典
  4. 从 0 到 1 实现国产数据库
  5. (ADB)删除Android手机出厂自带应用
  6. 【青橙商城-管理后台开发】3. web模块搭建
  7. 基于PLC数控钻床控制系统设计(说明书+开题报告+CAD 接线图 梯形图 原理图)
  8. 2023年5月20日左右出生,姓吴,取名
  9. 基于51单片机和四位数码管的智能计算器算法
  10. 联想小新V4000如何进入BIOS设置