redis 9.Redis持久化之AOF (AOF和RDB同时开启统默认取AOF的数据、AOF启动/修复/恢复), redis如何选择使用哪种持久化方式 ?

redis开启rdb和aof后文件正确恢复 1.服务器环境: 3主3从,192.168.24.16,192.168.24.17,192.168.24.18,每一台服务器上2个节点,分别为主节点和从节点 2.备份 开启的备份策略是默认的rdb,aof没有打开 使用 Redis Desktop Manager连接,数据库中有3条数据 现在我需要同时开启aof和rdb两个持久化策略,假如我们直接关闭redis,并且打开aof的开关,我们看看保存的数据还在不在。 更改配置之后重启redis发现数据没了 appendo.. 阅读详情


一.AOF

1.1 AOF概念

  以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只追加文件但不改写文件,redis启动之初会读取aof文件重新构建数据,即redis 重启是根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

aof持久化流程:
在这里插入图片描述

  (1)客户端发送请求(写命令)会被append追加到AOF缓冲区内;
  (2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的aof文件中;
  (3)aof文件大小超过重写策略或手动重写时,进程rewrite重写,压缩aof文件容量;
  (4)Redis服务重启时,会重新load加载aof文件中的写操作达到数据恢复的目的;

1.2 AOF配置

  在redis.conf中修改appendonly参数为yes,启用AOF;可配置文件名称,默认为 appendonly.aof(aof文件的保存路径,同rdb的路径一致)
在这里插入图片描述

重启redis,此时数据持久化存在2种机制AOF和RDB, 同时启用aof和rdb默认会使用aof文件加载数据
在这里插入图片描述
连接redis发现无数据,不会读取rdb文件数据

在这里插入图片描述

1.3 AOF启动/修复/恢复

  AOF的备份机制和性能虽然和RDB不同, 但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下

(1)正常恢复:
  修改默认的appendonly no,改为yes
  将有数据的aof文件复制一份保存到对应目录(查看目录:config get dir)
在这里插入图片描述

  恢复:重启redis然后重新加载

(2)异常恢复:
  如遇到AOF文件损坏,通过 /usr/local/bin/redis-check-aof --fix appendonly.aof 进行恢复

如:
破坏appendonly.aof,在文件末尾加上字符串
在这里插入图片描述
重新启动redis,失败
在这里插入图片描述
修复文件:
在这里插入图片描述
乱加的字符串被处理

在这里插入图片描述
重启redis 连接正常
在这里插入图片描述

1.4 AOF同步频率设置

appendfsync always
  始终同步,每次Redis的写入都会立刻记入日志;性能较差但数据完整性比较好
appendfsync everysec
  每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失。
appendfsync no
  redis不主动进行同步,把同步时机交给操作系统。
在这里插入图片描述

1.5 Rewrite压缩

1.5.1 概念:

  AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制, 当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩, 只保留可恢复数据的最小指令集.

使用命令:

bgrewriteaof

1.5.2 重写流程

在这里插入图片描述

  Redis 执行 fork() ,同时拥有父进程和子进程
  子进程开始将新 aof 文件的内容写入到临时文件
  对于所有新执行的写入命令,父进程一边累积到内存缓存中,一边继续追加到现有 AOF 文件的末尾,这样即使在重写过程中发生停机,不影响现有的 AOF 文件
  当子进程完成重写工作时,给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾
  用新文件替换旧文件,之后所有命令直接追加到新 AOF 文件的末尾

no-appendfsync-on-rewrite:
在这里插入图片描述

   no-appendfsync-on-rewrite参数设置为yes , 只写入缓存,不写入aof文件,用户请求不会阻塞,但是如果宕机会丢失这段时间的缓存数据。(降低数据安全性,提高性能)
   no-appendfsync-on-rewrite参数设置为no ,仍然把数据写入磁盘里,可能会发生阻塞。(数据安全,但是性能降低)

1.5.3 重写触发机制

在这里插入图片描述

  Redis会记录上次重写时aof文件大小,当 aof文件大小 >上次rewrite后aof文件大小 *(1+auto-aof-rewrite-percentage)且aof文件大小>auto-aof-rewrite-min-size时触发重写

auto-aof-rewrite-percentage:设置重写的基准值,默认文件超出100%时开始重写
auto-aof-rewrite-min-size:设置重写的基准值,默认最小文件64MB

如:
aof文件达到70MB开始重写,降到50MB,默认情况下,下次什么时候开始重写?(100MB)

  系统载入时或者上次重写完毕时,Redis会记录此时aof文件大小,设为base_size。若Redis的aof当前文件大小>= base_size *(1+100%)且大于64mb的情况下,Redis会对AOF进行重写。

1.6 优势劣势

优势:
  使用不同的fsync策略,Redis的性能保持的非常好(fsync是由后台线程进行处理的,主线程处理客户端请求)。一旦出现故障,默认采用appendfsync everysec策略,最多丢失1秒的数据

  aof文件是一个只进行追加的日志文件,即使由于某些原因(磁盘空间已满,写的过程中宕机等)未执行完整的写入命令,可使用redis-check-aof工具修复

  Redis 在 aof 文件体积变得过大时,自动地在后台对 AOF 进行bgrewriteaof:重写后的新aof文件包含恢复当前数据集所需的最小命令集合。 整个重写操作绝对安全,子进程重写aof不影响主进程AOF追加日志

  aof文件以 Redis 协议的格式有序地保存了对数据库执行的所有写入操作, 因此 aof 文件的内容容易被人读懂。 假设不小心执行了 FLUSHALL 命令, 只要 AOF 文件未被重写, 那么只要停止服务器, 移除 aof 文件末尾的 FLUSHALL 命令, 并重启 Redis , 就可以将数据集恢复到 FLUSHALL 执行之前的状态

劣势:
  对于相同的数据集来说,aof文件的体积通常要大于rdb 文件的体积
  根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB 。 在一般情况下,appendfsync everysec的性能依然非常高, 不过在处理海量的写入时,rdb更有保证


二. 如何选择使用哪种持久化方式 ?

  一般来说, 如果想媲美 PostgreSQL 的数据安全性, 应同时使用两种持久化功能

  如果可以承受数分钟以内的数据丢失, 那么可以只使用 RDB 持久化

  有许多用户只使用 AOF 持久化, 但并不推荐: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 可避免 AOF 程序的 bug


三.怎样从RDB方式切换为AOF方式?

  在 Redis 2.2 或以上版本,可在不重启的情况下,从 RDB 切换到 AOF :

(1) 为最新的 dump.rdb 文件创建一个备份,并存储备份到文件服务器;

(2) 关闭rdb
在这里插入图片描述
执行以下两条命令:

config set appendonly yes
config set save ""

  执行的第一条命令开启AOF 功能, Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求并开始将写入命令追加到 AOF 文件末尾。
  执行的第二条命令关闭 RDB 功能。 这一步是可选的, 也可以同时使用 RDB 和 AOF 这两种持久化功能
在这里插入图片描述

保存修改的配置

config rewrite
YOLOv11 模型改进全流程:从代码修改到性能跃升,让你打造专属检测利器 无论是科研中需要发表创新点满满的论文,还是企业里要解决特定场景的检测难题,这套方法都能让你在YOLOv11的基础上打造出“量身定制”的检测模型。别再让通用模型的“平庸性能”限制你的项目上限——现在就动手修改代码,让你的YOLOv11模型在精度、速度或小样本适应能力上实现跨越式提升,用技术突破证明你的AI研发实力!本文将带你从代码层面入手,完成从骨干网络到损失函数的全维度改进,真正掌握让YOLOv11“为你所用”的技术实力。该改进对小样本类别(如数据集中仅占5%的“稀有缺陷”)的识别精度提升显著。 阅读详情

相关推荐

VisionMaster4.2.0与C#控件开发实战:从入门到精通的完整指南

本文详细介绍了VisionMaster4.2.0与C#控件开发的实战指南,从基础环境搭建到核心控件使用,再到高级功能实现。通过VmFrontendControl、VmGlobalToolControl等核心控件的深入解析,帮助开发者快速掌握机器视觉应用开发技巧,提升开发效率。特别适合需要集成VisionMaster4.2.0 SDK进行视觉系统开发的C#程序员。

weixin_42665725的博客 383

redis 持久化 RDB + AOF

redis 持久化 RDB 、AOF 、混合模式、redis文件恢复

lfssst的博客 1373

语义通信高斯信道仿真代码

【代码】语义通信高斯信道仿真代码。

一去不复返的通信er 427

【Linux】Redis高可用概述1(RDB和AOF的备份恢复)

在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么 样的问题。持久化复制哨兵集群。

Linux小白一只~正处于学习阶段,觉得我写的还好的请多多给我点赞呀,谢谢大家!!(๑>ڡ<)☆ 1118

【数据攻略】字节面试真题(含答案)+100道面试题库

数据攻略

qq_40002713的博客 4102

RYU+Mininet的SDN架构-设计校园网络(一)

现有一个中学,需要设计一个中小型网络满足学校的网络需求。学校有教学区,实验室区域和服务器区域。教学区为了满足接入的灵活性和信号强度要求,需要满足设计WIFI满足日常教室和同学需求,接入上限为200人。实验室区域需要有一台教师主机方便管理实验室其余电脑,并且教师主机可以访问学校服务器,方便为同学们实验室授课。学校服务器区域设有学校相关重要文件和学校网页相关内容。最后学校还会接入互联网。

weixin_53284122的博客 8034

商品详情页系统 -- day03 RDB和AOF配置及使用实验

一、配置RDB持久化机制   修改 /etc/redis/6379.conf 配置文件,配置redis的RDB持久化机制: 其中:         save 60 1000 表示:每隔60s,如果超过1000个key的值发生变化,那么就会生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称为snapshotting(快照),也可以手动调用save或者...

wingzhezhe的博客 565

飞牛fnNAS个人小账本导入微信账单

本文介绍了将微信支付账单导入ezBookkeeping个人记账系统的详细方法。首先通过微信申请导出账单文件,接收后需进行Excel预处理:删除前导行、添加账户和分类列、整理金额格式等。在ezBookkeeping中需预先设置"微信"分类和账户。导入时需注意列映射关系,包括交易时间、账户名称等关键字段的对应设置。文章还提到处理交易标签、格式转换等细节问题,并建议避免使用"修改余额"功能。该方法同样适用于支付宝账单导入,解决了直接导入可能出现的格式不兼容问题。

dgnankai的专栏 482

Redis持久化操作RDB和AOF及数据备份恢复方式

持久化的意义:Redis对数据的操作都是基于内存的,当遇到了进程退出、服务器宕机等意外情况,如果没有持久化机制,那么Redis中的数据将会丢失无法恢复。有了持久化机制,Redis在下次重启时可以利用之前持久化的文件进行数据恢复。 目录RDB触发方式数据备份恢复方式优点缺点AOF RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘 触发方式 save和bgsave命令都可以手动触发RDB持久化 save 执行save命令会手动触发RDB持久化,但是save命令会阻塞Redis服务,直到RDB持久化完成

Andrew0219的博客 1033

Flink实战案例(十三):Flink DataStream 八大分区策略与自定义分区器

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。 本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。 八大分区策略继承关系图 ChannelSelector: 接口,决定将记录写入哪个Channel。有3个方法: void setup(int numberOfChannels):

微信搜:import_bigdata,大数据领域硬核原创作者 1124

【DaVinci Developer专题】-28-Client Server Port Interface中useArgumentType、useArrayBaseType和useVoid介绍

共7页 目录 1 ImplPolicy = useArgumentType 2 ImplPolicy = useArrayBaseType 3 ImplPolicy = useVoid 4 三者代码差异部分 5 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer

「汽车电子助手」的博客 1502

【Redis】Redis两种持久化RDB和AOF的区别

文章目录RDB什么是RDB如何持久化SnapshotRDB优点与缺点AOF什么是AOF持久化优点缺点RDB与AOF如何选择 Redis持久化备份数据的方式有两种:RDB(Redis DataBase) 、 AOF(Append Only File). RDB 什么是RDB 在指定时间间隔内,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中,来达到恢复数据的。 如何持久化 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写进一个临时文件中,等到持

瑞新の博客:bennyrhys 2873

【100分- 求最多可以派出多少支团队】(题目+思路+Java&C++&Python解析+在线测试)

用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。

m0_73659489的博客 313

Redis数据恢复实战:从RDB/AOF备份文件完整恢复指南

Redis的恢复机制设计得非常优雅,通过简单的"停止-放文件-启动"三步即可完成数据恢复。理解优先级规则:AOF优先于RDB恢复掌握检查工具和建立演练机制:定期验证备份的有效性完善监控告警:及时发现恢复过程中的问题没有经过验证的备份,等于没有备份。定期进行恢复演练,才是真正对数据安全负责的态度。扩展阅读Redis持久化官方文档redis-check-aof工具详解Redis数据迁移最佳实践。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1150

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

redis持久化【RDB+AOF】持久化双雄

这是redis系列文章之《redis持久化【RDB+AOF】持久化双雄》

m0_65431718的博客 9640

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis持久化方式RDB和AOF的优缺点

Redis 提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 RDB,简而言之,就是在不同的时间点,将Redis 存储的数据生成快照并存储到磁盘等介质上。 AOF,则是换了一个角度来实现持久化,那就是将Redis 执行过的所有写指令记录下来,在下次Redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 RDB 和AOF 两种方式也可以同时使用,在这种情况下,如果Redis 重启的话,则会优先采用AOF 方式来进

Aa112233aA1的博客 9486

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Redis 持久化之 RDB & AOF

Redis持久化知识,看这一篇就够了

zwl2220943286的博客 2124

Redis持久化机制 RDB 和 AOF 的选择

在 Redis 运行时, RDB 将当前内存中的数据库生成一个 Snapshot 快照保存到磁盘文件中, 在 Redis 重启动时, RDB 可以通过载入 RDB 文件来还原数据库的状态。

double222222的博客 1141

Redis: RDB与AOF的选择和容灾备份以及Redis数据持久化的优化方案

1 )同时开启在我们 Redis 的服务器上,把RDB和AOF同时打开, 这样可以通过RDB快速的恢复数据,因为它是一个紧凑的缩缩的二进制文件, 但是有时 Redis 的不小心故障了,丢失了十几分钟的数据可以通过AOF来做数据的恢复, 因为它所有写命令都会记录,Redis先加载AOF文件来恢复原始数据,因为AOF数据比RDB更完整,有时候我们会把一些错误的命令也记录在文件中, 会有一些潜在的bug,可以通过 redis-check-aof 来做修复,如果AOF文件实在是用不了,恢复不了,可以把RDB作为一

Wang的专栏 1412

【Redis】Redis持久化机制,RDB和AOF

Redis 的持久化机制和是保证数据不丢失的核心功能,但两者的实现原理、性能开销和适用场景差异显著。把一次性保存成一个,默认文件名dump.rdb。

2301_78725423的博客 1276

【Redis持久化】RDB、AOF介绍和使用

首先,介绍ROB定义中的快照(snapshot):把某一时刻的数据和状态以文件(RDB文件:dump.rdb)的形式写到磁盘上。Redis的数据都在内存中,保存备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中。Redis 会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何 IO 操作的,这样就确保了 redis 极高的性能。RDB方式会在一定的时间间隔内,存储数据进入文件。适合大规模的数据恢复按照业务定时备份对数据完整性和一致性要求不高。

z1076233241的博客 1505

Redis持久化RDB和AOF区别

RDB RDB是Redis内存到硬盘的快照,用于redis持久化,创建RDB二进制文件,将存储在内存中的数据,持久化的放到硬盘中,当我们需要这些数据的时候,启动载入RDB文件,数据将会被存入内存中,其实RDB就是一种快照的方式持久化存储数据,也可以作为一种复制媒介。 触发机制--主要三种方式 save 同步命令(会阻塞redis) bgsave 异步命令(fork) 自动 #关闭自动保存配置#save 900 1 #900秒 改了一次就自动生成RDB文件#save 300 10 #300秒修改了1

java_atguigu的博客 4639

Redis持久化的两种方式RDB和AOF详解

redis持久化的两种方式详解

qq_43108153的博客 1182

Redis的两种持久化RDB和AOF

Redis持久化备份数据的方式有两种:RDB(Redis DataBase) 、 AOF(Append Only  File). RDB 什么是RDB 在指定时间间隔内,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中,来达到恢复数据的。  如何持久化 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写进一个临时文件中,...

不忘初心的博客 2万+

【Redis】五、Redis持久化、RDB和AOF

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!

hhb442的博客 1280

Redis持久化两种方式—RDB和AOF

Redis提供了两种数据持久化方式: RDB:redis的数据存储在内从中,不定期的将数据异步同步到磁盘上(半持久化) AOF:记录redis的所有写操作到aof(append only file)文件中(全持久化) redis中默认使用的事RDB实现数据持久化 RDB: SNAPSHOTING 这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以...

zhoushimiao1990的博客 2210
上一篇: 定期逻辑备份表并删除表中记录,mybatis 动态传入表名, springboot schedule定时任务动态(从数据库读取)读取执行
下一篇: redis 10.主从复制(主从复制原理、一主两从、去中心化,主节点shutdown从节点上位)
但行益事莫问前程
但行益事莫问前程 新星创作者: 数据库技术领域 新星创作者: 数据库技术领域
博客等级 码龄7年 8490粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值