首页 > 数据库 >Redis巡检检查 redis-check-aof

Redis巡检检查 redis-check-aof

时间:2024-07-12 09:08:32浏览次数:19  
标签:aof 文件 Redis redis AOF RDB 重写

一、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文件是一个二进制文件,不是易于读取和理解的文本文件,不便于进行数据恢复、备份和分析。

标签:aof,文件,Redis,redis,AOF,RDB,重写
From: https://www.cnblogs.com/zjdxr-up/p/18297080

相关文章

  • .NET/C#、Netcore、数据库、Redis 、RabbitMQ&kafka、Docker ⾯试题汇总系列目录
    .NET/C#⾯试题汇总系列.NET/C#⾯试题汇总系列:ASP.NET常见面试题001.NET/C#⾯试题汇总系列:ASP.NET常见面试题002.NET/C#⾯试题汇总系列:ASP.NET常见面试题003.NET/C#⾯试题汇总系列:基础语法.NET/C#⾯试题汇总系列:ASP.NETMVC.NET/C#⾯试题汇总系列:多线程.NET/C#⾯......
  • 7.10日学习打卡----初学Redis(五)
    7.10日学习打卡目录:7.10日学习打卡一.redis功能流水线pipeline什么是流水线?pipeline实现使用pipeline发布与订阅Redis的发布与订阅发布订阅命令行实现慢查询Redis命令执行的整个过程如何进行配置实践建议二.redis的持久化机制RDB持久化机制触发机制-主要三种方式......
  • redis相关知识记录
    redis基本数据类型Redis⽀持五种主要数据结构:字符串(Strings)、列表(Lists)、哈希表(Hashes)、集合(Sets)和有序集合(SortedSets)。这些数据结构为开发者提供了灵活的数据操作⽅式,满⾜了不同场景下的数据存储需求。•字符串(Strings):最基本的数据类型,可以包含任何数据,如数字、字符......
  • 接口文档的书写,git的拉取错误的解决,数据库多表查询的进一步认识(以后开发一定要先仔细
    202407111接口文档的书写:1.1首先写你这个大模块是什么功能。1.2开始根据你的功能写接口文档:2解决git拉取错误的问题:2.1出现这样的问题:(推送出错)2.2原因分析:可能因为重装过系统,或者是安装git的位置发生了变化等情况出现。2.3找到git的安装路径,打开gitbash之后,进......
  • 13--memcache与redis
    前言:数据库读取速度较慢一直是无法解决的问题,大型网站应对的方式主要是使用缓存服务器来缓解这种情况,减少数据库访问次数,以提高动态Web等应用的速度、提高可扩展性。1、简介Memcached/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动......
  • 【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
    介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET8:https://github.com/LuBu0505/redis-copy-net8 RedisCopy.NET8RedisCopy控制台工具允许将Redis数据从一个Redis服务端复制到另一个。 Note: 不支持redis集群......
  • Redis高可用之持久化、主从复制
    一、Redis高可用策略概述持久化持久化是最简单的高可用方法,主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。主从复制主从复制是高可用Redis的基础,主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复哨兵在主从复制的基础上,......
  • NoSQL之Redis配置与优化
    目录NoSQL之Redis配置与优化一、关系数据库和非关系数据库1.关系型数据库2.非关系型数据库3.非关系型数据库产生背景4.关系型数据库和非关系型数据库的区别4.1数据存储方式不同4.2扩展方式不同4.3对事务性的支持不同5.总结二、Redis的基础概念1.Redis简介2.Red......
  • redis
    一、redis概述(一)什么是redis?        Redis(RemoteDictionaryServer)是一个开源的、基于内存的、可选持久化的日志型Key-Value数据库编写,支持网络操作,并提供多种语言的API。Redis支持多种数据结构,包括字符串(string)、列表(list)、集合(set)、有序集合(zset)和哈希(hash),并且这......
  • Redis实现延迟任务
    @DatapublicclassTaskimplementsSerializable{/***任务id*/privateLongtaskId;/***类型*/privateIntegertaskType;/***优先级*/privateIntegerpriority;/***执行id*/......