Redis巡检检查 redis-check-aof

redis,check,aof · 浏览次数 : 52

小编点评

一、AOF(Append Only File)是一种以日志的形式记录每个写操作的方法。它将Redis执行过的所有写指令记录下来,但读操作不记录。AOF文件仅允许追加文件,不允许改写文件。在Redis启动时,它会读取该文件并重新构建数据。这意味着,如果Redis重启,它会根据日志文件的内容从前往后执行写指令,以完成数据的恢复工作。 二、AOF的开启与配置: 1. 默认情况下,AOF功能是关闭的。要启用AOF,需要在配置文件中进行配置。 2. 配置示例如下: ``` appendonly yes appendfilename "appendonly.aof" appendfsync always ``` 其中,`appendonly` 设置为 `yes` 以启用AOF;`appendfilename` 指定 AOF 文件的名称;`appendfsync` 设置为 `always`、`everysec` 或 `no`,分别表示每次写入都同步、每秒同步或由操作系统决定何时同步。 三、AOF文件的保存路径和备份: 1. AOF文件的保存路径应与RDB文件的路径一致。 2. 可以在 Redis 配置文件中配置文件名称,默认为 `appendonly.aof`。 四、AOF和RDB的启动优先级: 1. 当 AOF 和 RDB 同时开启时,Redis 以 AOF 为准,因为 AOF 文件中保存的数据更完整。 五、AOF 文件故障恢复: 1. 如果 AOF 文件损坏,可以使用 `redis-check-aof` 命令进行恢复。 2. 报错可能包括:“Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix”。 六、AOF 同步频率设置: 1. AOF 提供了三种保存策略:每次写入都同步(always)、每秒同步(everysec)和由操作系统决定何时同步(no)。 七、AOF 重写: 1. 当 AOF 文件过大时,Redis 会启动 AOF 文件的内容压缩,只保留可以恢复数据的最小指令集。 2. AOF 重写的触发条件:文件大小超过设定的阈值(`auto-aof-rewrite-percentage`)或文件大小达到最小阈值(`auto-aof-rewrite-min-size`)。 八、AOF 的优点和缺点: 1. 优点:数据完整性高、实时性强、易于理解和修改、支持多种同步方式。 2. 缺点:文件体积大、恢复速度慢、对写性能有影响、重写过程可能占用资源。 九、RDB 的优缺点: 1. 优点:文件体积小、恢复速度快、对系统性能影响小、适用于备份和容灾。 2. 缺点:数据实时性低、可能存在兼容性问题、恢复时可能丢失数据、可读性低。

正文

一、AOF
1、AOF  是什么
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

2、AOF默认不开启,需要手动在配置文件中配置

# AOF 持久化开启  
# appendonly no  
  
# AOF 文件的名称  
# appendfilename "appendonly.aof"  
  
# AOF 持久化策略  
# appendfsync always  
# appendfsync everysec  
# appendfsync no

3、可以在redis.conf中配置文件名称,默认为 appendonly.aof

# AOF 文件的名称  
# appendfilename "appendonly.aof"  

4、AOF文件的保存路径,同RDB的路径一致
5、AOF和RDB同时开启,redis听谁的?
    以 AOF 为准,因为 AOF 里面保存的数据比较完整。

 6、AOF文件故障备份
    AOF的备份机制和性能虽然和RDB不同, 但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下,启动系统即加载;

    AOF和RDB同时开启,系统默认取AOF的数据;

7、AOF文件故障恢复
    AOF文件的保存路径,同RDB的路径一致。

    如遇到AOF文件损坏,可通过下面的命令进行恢复:

redis-check-aof  --fix  appendonly.aof   进行恢复

    遇到的报错一般如下:

# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
# Redis version=5.0.10, bits=64, commit=00000000, modified=0, pid=121, just started
# Configuration loaded
* Running mode=sentinel, port=26379.
# Sentinel ID is b9715439b50e476eac19d423906edfad904006fb
# +monitor master redismaster 100.127.64.21 6379 quorum 2
# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
# Redis version=5.0.10, bits=64, commit=00000000, modified=0, pid=120, just started
# Configuration loaded
* +slave slave 100.127.64.19:6379 100.127.64.19 6379 @ redismaster 100.127.64.21 6379
* Running mode=standalone, port=6379.
# Server initialized
* Reading RDB preamble from AOF file...
* Reading the remaining AOF tail...
# Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
* +sentinel sentinel 09533b1fd689c178ace11264b1474948dff10189 100.127.64.21 26379 @ redismaster 100.127.64.21 6379
* +sentinel sentinel 7a6a997019bdf8a95c57b494701f4877a5cb5edc 100.127.64.19 26379 @ redismaster 100.127.64.21 6379

8、AOF同步频率设置
    AOF 提供了三种保存策略:

# AOF 持久化策略  
# appendfsync always  
# appendfsync everysec  
# appendfsync no  

  说明:

appendfsync always:始终同步,每次Redis的写入都会立刻记入日志
appendfsync everysec:每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失。
appendfsync no:把不主动进行同步,把同步时机交给操作系统 

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

10、Redis如何实现重写?
    AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。

11、何时重写
    重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。

auto-aof-rewrite-percentage 100  
auto-aof-rewrite-min-size 64mb
  • auto-aof-rewrite-percentage:这个配置项指定了AOF文件增长率的百分比阈值。当AOF文件的大小超过上一次重写时的大小的这个百分比时,Redis会触发AOF重写。默认值通常为100%,意味着AOF文件大小翻倍时会触发重写。

  • auto-aof-rewrite-min-size:这个配置项指定了AOF文件的最小大小阈值。只有当AOF文件的大小超过这个值时,才会考虑上述的百分比增长条件来触发重写。默认值通常为64MB。

12.AOF的优缺点

  AOF的优点

  1. 数据完整性高:AOF通过保存每次写操作的命令来确保数据的完整性,即使发生宕机,也可以通过重新执行AOF文件中的命令来恢复数据,从而最小化数据丢失。
  2. 实时性:AOF可以配置为每秒同步一次或每次写操作都同步,从而提供较高的实时性。
  3. 易于理解和修改:AOF文件是以纯文本形式存储的,易于理解和修改(尽管不推荐直接修改AOF文件)。
  4. 支持多种同步方式:Redis提供了多种AOF同步策略,可以根据性能和数据安全性的需求进行选择。

         AOF的缺点

  1. 文件体积大:随着时间的推移,AOF文件可能会变得非常大,占用大量的磁盘空间,并影响Redis的启动和恢复速度。
  2. 恢复速度慢:在Redis启动时,需要重新执行AOF文件中的命令来恢复数据,如果AOF文件很大,恢复过程可能会非常耗时。
  3. 对写性能的影响:当使用较高的同步策略时(如always),每个写操作都需要等待磁盘I/O操作完成,可能会降低Redis的写性能。
  4. 重写过程可能占用资源:AOF重写是一个资源密集型的操作,需要创建子进程来执行,可能会占用大量的CPU和内存资源。

13.RDB的优缺点

  RDB的优点

  1. 文件体积小:RDB文件是Redis数据库在某个时间点的内存快照,通常比AOF文件小得多,便于存储和传输。
  2. 恢复速度快:由于RDB文件只保存了内存快照,恢复数据时只需要加载一次文件,可以快速地恢复数据。
  3. 对系统性能影响小:RDB持久化过程由子进程负责,减少了主线程的负载,对系统性能影响较小。
  4. 适用于备份和容灾:RDB文件是一个紧凑的二进制文件,非常适合用于备份和容灾恢复。

  RDB的缺点

  1. 数据实时性低:RDB是间隔一段时间进行持久化,无法做到实时持久化,如果在这一间隔内发生故障,可能会丢失数据。
  2. 可能存在兼容性问题:Redis演进过程中存在多个格式的RDB版本,可能存在老版本Redis无法兼容新版本RDB文件的问题。
  3. 恢复时可能丢失数据:如果Redis在生成RDB文件之前崩溃,将会丢失最后一次持久化后的数据。
  4. 可读性低:RDB文件是一个二进制文件,不是易于读取和理解的文本文件,不便于进行数据恢复、备份和分析。

与Redis巡检检查 redis-check-aof相似的内容:

Redis巡检检查 redis-check-aof

一、AOF1、AOF 是什么以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。 2、AOF默认不开

[软件下载] 常用软件安装包链接-阿里云盘

1、Typora导出文件安装包Pandoc 2、JDK1.5 3、JDK17 4、JDK8 5、redis客户端工具RedisDesktopManager 6、数据库链接工具DBeaver 7、Typora带序列号破解 8、ApiPost 接口测试工具 9、IDEA2021+破解工具 10、mysq

(五)Redis 缓存异常、应对策略

1、缓存和数据库不一致 只要我们使用 Redis 缓存,就必然会面对缓存和数据库间的一致性保证问题,这里的“一致性”包含了两种情况:缓存中有数据且与数据库中的值相同、缓存中没有数据,最新值在数据库中。 对于读写缓存来说,要想保证缓存和数据库中的数据一致,就要采用同步直写策略,在业务应用中使用事务机制

Redis 高阶应用

生成全局唯一 ID 全局唯一 ID 需要满足以下要求: 唯一性:在分布式环境中,要全局唯一 高可用:在高并发情况下保证可用性 高性能:在高并发情况下生成 ID 的速度必须要快,不能花费太长时间 递增性:要确保整体递增的,以便于数据库创建索引 安全性:ID 的规律性不能太明显,以免信息泄露 从上面的要

35个Redis企业级性能优化点与解决方案

Redis作为企业级应用中广泛使用的高性能键值存储数据库,其性能优化是一个复杂且多面的话题。以下是V 哥整理的一些关键的优化点和相应的解决方案,提供给兄弟们参考。 Redis的性能优化涉及到硬件选择、配置调整、客户端优化、持久化策略等多个层面。 1. 硬件优化 解决方案:选择更快的CPU、更多的内存

Redis 分布式锁

Redis 分布式锁 分布式锁的演变 本地锁(单机用) 利用redis进行分布式锁 使用 set 防止死锁 加过期时间 使用 setnx 防止A请求未执行完 锁过期删除 B请求加锁后 A完成后误删该锁 使用 Hash结构, 规定每个请求只能删除自己的锁 保证并发安全,申请锁和加过期时间需要 原子性,

【长文】带你搞明白Redis

Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每...

(四)Redis 缓存应用、淘汰机制

1、缓存应用 一个系统中不同层面数据访问速度不一样,以计算机为例,CPU、内存和磁盘这三层的访问速度从几十 ns 到 100ns,再到几 ms,性能的差异很大,如果每次 CPU 处理数据时都要到磁盘读取数据,系统运行速度会大大降低。 所以,计算机系统中,默认有两种缓存: (1)CPU 里面的末级缓存

redis性能测试

环境 redis 7.2.5 主频 核心数 内存 2.5GHz 32 64GB 测试结论 当前场景下redis单线程、多线程表现差异不大 使用pipeline模式可以显著提高基准性能 非pipilie下redis性能再12~13w左右 pipiline下redis性能在35w左右 测试记录 单线程r

Redis 常用的数据结构简介与实例测试【Redis 系列二】

〇、都有哪些数据结构? Redis 提供了较为丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。 随着 Redis 版本的更新,后面又支持了四种数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版