reids集群,AOF文件损坏后怎么修复

服务器死机重启后,redis的AOF文件损坏。

359013:C 16 Nov 2024 10:17:16.317 * DB saved on disk
359013:C 16 Nov 2024 10:17:16.317 * RDB: 22 MB of memory used by copy-on-write
1693499:M 16 Nov 2024 10:17:16.331 * Background saving terminated with success
107016:C 16 Nov 2024 12:07:34.038 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
107016:C 16 Nov 2024 12:07:34.039 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=107016, just started
107016:C 16 Nov 2024 12:07:34.039 # Configuration loaded
107017:M 16 Nov 2024 12:07:34.068 * Node configuration loaded, I'm f7488d141611784206d1221e713fc4aa86964844
                _._                                                  
           _.-`__ ''-._                                             
      _.-`    .  _.  ''-._           Redis 5.0.3 (00000000/0) 64 bit
  .-` .-.  \/    _.,_ ''-._                                   
 (    '      ,       .-  | ,    )     Running in cluster mode
 |-._-...- __...-.-._|' _.-'|     Port: 7000
 |    -._   ._    /     _.-'    |     PID: 107017
  -._    -._  -./  _.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |           http://redis.io        
  -._    -._-.__.-'_.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |                                  
  -._    -._-.__.-'_.-'    _.-'                                   
      -._    -.__.-'    _.-'                                       
          -._        _.-'                                           
              -.__.-'                                               

107017:M 16 Nov 2024 12:07:34.071 # Server initialized
107017:M 16 Nov 2024 12:07:34.071 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
107017:M 16 Nov 2024 12:07:34.072 * Reading RDB preamble from AOF file...
107017:M 16 Nov 2024 12:07:34.247 * Reading the remaining AOF tail...
107017:M 16 Nov 2024 12:07:34.301 # Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
107132:C 16 Nov 2024 12:07:42.882 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
107132:C 16 Nov 2024 12:07:42.882 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=107132, just started
107132:C 16 Nov 2024 12:07:42.882 # Configuration loaded
107133:M 16 Nov 2024 12:07:42.884 * Node configuration loaded, I'm 1b0bc4a3b7ca6b985b9496df6ab0f2e1d8306d38
                _._                                                  
           _.-`__ ''-._                                             
      _.-`    .  _.  ''-._           Redis 5.0.3 (00000000/0) 64 bit
  .-` .-.  \/    _.,_ ''-._                                   
 (    '      ,       .-  | ,    )     Running in cluster mode
 |-._-...- __...-.-._|' _.-'|     Port: 7001
 |    -._   ._    /     _.-'    |     PID: 107133
  -._    -._  -./  _.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |           http://redis.io        
  -._    -._-.__.-'_.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |                                  
  -._    -._-.__.-'_.-'    _.-'                                   
      -._    -.__.-'    _.-'                                       
          -._        _.-'                                           
              -.__.-'                                               

107133:M 16 Nov 2024 12:07:42.884 # Server initialized
107133:M 16 Nov 2024 12:07:42.885 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
107133:M 16 Nov 2024 12:07:42.885 * Reading RDB preamble from AOF file...
107133:M 16 Nov 2024 12:07:43.016 * Reading the remaining AOF tail...
107133:M 16 Nov 2024 12:07:43.054 # Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
117154:C 16 Nov 2024 12:19:58.406 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
117154:C 16 Nov 2024 12:19:58.406 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=117154, just started
117154:C 16 Nov 2024 12:19:58.406 # Configuration loaded
117155:M 16 Nov 2024 12:19:58.407 * Node configuration loaded, I'm f7488d141611784206d1221e713fc4aa86964844
                _._                                                  
           _.-`__ ''-._                                             
      _.-`    .  _.  ''-._           Redis 5.0.3 (00000000/0) 64 bit
  .-` .-.  \/    _.,_ ''-._                                   
 (    '      ,       .-  | ,    )     Running in cluster mode
 |-._-...- __...-.-._|' _.-'|     Port: 7000
 |    -._   ._    /     _.-'    |     PID: 117155
  -._    -._  -./  _.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |           http://redis.io        
  -._    -._-.__.-'_.-'    _.-'                                   
 |-._-._    -.__.-'    _.-'_.-'|                                  
 |    -._-._        _.-'_.-'    |                                  
  -._    -._-.__.-'_.-'    _.-'                                   
      -._    -.__.-'    _.-'                                       
          -._        _.-'                                           
              -.__.-'                                               

117155:M 16 Nov 2024 12:19:58.407 # Server initialized
117155:M 16 Nov 2024 12:19:58.407 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
117155:M 16 Nov 2024 12:19:58.407 * Reading RDB preamble from AOF file...
117155:M 16 Nov 2024 12:19:58.540 * Reading the remaining AOF tail...
117155:M 16 Nov 2024 12:19:58.577 # Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>

根据日志内容,当前问题主要集中在以下两点:

  1. AOF文件损坏导致Redis无法正常启动
  2. 透明大页(Transparent Huge Pages, THP)问题引发性能警告,但不会直接导致Redis不可用

以下是详细的修复步骤:


步骤 1:修复AOF文件损坏问题

1.1 备份当前的AOF文件

在操作AOF文件前,请务必进行备份,以防止数据丢失:

cp /path/to/appendonly.aof /path/to/appendonly.aof.bak
1.2 使用redis-check-aof工具修复AOF文件

Redis日志中明确提示了AOF文件存在损坏,可以使用redis-check-aof工具尝试修复:

redis-check-aof --fix /path/to/appendonly.aof
  • 修复完成后重新启动Redis:
    redis-server /path/to/redis.conf
    
1.3 验证修复效果
  • 连接Redis实例,验证是否恢复正常:
    redis-cli -c -p <端口号> ping
    
    如果返回PONG,说明Redis已经正常启动。
1.4 如果修复失败

如果redis-check-aof工具无法修复AOF文件,可以采取以下措施:

  1. 重命名损坏的AOF文件,使用RDB数据恢复

    mv /path/to/appendonly.aof /path/to/appendonly.aof.damaged
    redis-server /path/to/redis.conf
    

    Redis会根据RDB文件重新加载数据并生成新的AOF文件。

  2. 从其他健康节点同步数据
    如果当前节点是从节点,可以重新配置为从节点以同步数据:

    redis-cli -c -p <从节点端口> cluster replicate <主节点ID>
    
  3. 使用集群模式重新分片
    如果节点为主节点且无法修复,可以通过迁移分片到其他节点来保持集群健康:

    redis-cli --cluster reshard <健康节点IP>:<端口>
    

步骤 2:禁用透明大页(THP)

THP会影响Redis性能,需将其禁用。

2.1 临时禁用

以下命令可立即禁用THP,但仅在当前会话有效:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2.2 永久禁用

编辑系统配置文件/etc/rc.local,添加以下内容以在每次启动时禁用THP:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

确保/etc/rc.local文件有执行权限:

chmod +x /etc/rc.local
2.3 验证禁用状态

执行以下命令确认THP已禁用:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

输出应为:always madvise [never]


步骤 3:监控和优化集群

3.1 检查集群状态

在其他健康的节点上检查当前集群状态,确认所有节点的连接状态:

redis-cli -c -p <健康节点端口> cluster nodes
redis-cli -c -p <健康节点端口> cluster info
  • 确保cluster_stateok
  • 确认没有节点处于failfail?状态。
3.2 配置自动AOF重写

在配置文件中启用AOF文件的自动重写,避免文件过大导致损坏:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
3.3 定期备份

定期备份RDB和AOF文件,确保可以在出现问题时快速恢复。


步骤 4:总结

完成以上步骤后,Redis节点应该能够正常启动和运行。如果问题仍未解决,请提供以下信息以进一步分析:

  1. 修复后的日志输出。
  2. 当前集群的cluster nodescluster info结果。
  3. 是否有其他错误提示。

通过以上方式可以确保Redis节点的健康状态恢复正常,同时降低后续发生问题的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【每日刷题】Day156

【每日刷题】Day156 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1020. 飞地的数量 - 力扣(LeetCode) 2. 1765. 地图中的最高点 - 力扣(LeetCode) 3. 1162. 地图分…

J.U.C - 深入解读Condition条件变量原理源码

文章目录 Pre概述Condition 主要方法Condition案例Condition的源码解析1. 等待&#xff1a;condition. await2. 唤醒Condition. signal Condition总结 Pre J.U.C - 深入解析ReentrantLock原理&源码 概述 配合synchronized同步锁在同步代码块中调用加锁对象notify和wait方…

c++ 类和对象(中)

前言 我们看看下面的代码以及代码运行结果 代码1 我们可以看到在我们的类Data中的函数成员print中&#xff0c;我们并没有设置形参&#xff0c;在调用此函数时&#xff0c;也并没有多余传参&#xff0c;但是我们调用它时&#xff0c;却能准确打印出我们的_year、_month、_day…

python:用 sklearn 构建 K-Means 聚类模型

pip install scikit-learn 或者 直接用 Anaconda3 sklearn 提供了 preprocessing 数据预处理模块、cluster 聚类模型、manifold.TSNE 数据降维模块。 编写 test_sklearn_3.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 构建 K-Means 聚类模型 "&…

使用python编写工具:快速生成chrome插件相关文件结构

本文将详细分析一段用 wxPython 编写的 Python 应用程序代码。该程序允许用户创建一些特定文件并将它们保存在指定的文件夹中&#xff0c;同时也能够启动 Google Chrome 浏览器并打开扩展页面&#xff0c;自动执行一些操作。 C:\pythoncode\new\crxiterationtaburl.py 全部代码…

使用Web Components构建模块化Web应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Web Components构建模块化Web应用 使用Web Components构建模块化Web应用 使用Web Components构建模块化Web应用 引言 Web Co…

谷歌浏览器的自动翻译功能如何开启

在当今全球化的网络环境中&#xff0c;能够流畅地浏览不同语言的网页是至关重要的。谷歌浏览器&#xff08;Google Chrome&#xff09;提供了一项强大的自动翻译功能&#xff0c;可以帮助用户轻松跨越语言障碍。本文将详细介绍如何开启和使用谷歌浏览器的自动翻译功能&#xff…

算法---解决“汉诺塔”问题

# 初始化步骤计数器 i 1 # 定义移动盘子的函数 def move(n, mfrom, mto): global i # 使用全局变量i来跟踪步骤 print("第%d步:将%d号盘子从%s->%s" % (i, n, mfrom, mto)) # 打印移动步骤 i 1 # 步骤计数器加1 #第一种方法 # 定义汉诺塔问题的递归…

uniapp对接极光推送,实现消息推送功能

通过集成JG-JPush和JG-JCore插件&#xff0c;可以在应用中添加消息推送功能&#xff0c;向用户发送通知、消息等。这对于提升用户体验、增加用户粘性非常有帮助‌。 效果图&#xff1a; 一、登录极光官网 进入【服务中心】-【开发者平台】 创建应用&#xff1a;【概览】- 【创…

redis高性能键值数据库技术简介

什么是redis redis是远程字典服务&#xff08;Remote Dictionary Server &#xff09;的简写&#xff0c;是一个完全开源的高性能的Key-Value数据库&#xff0c;提供了丰富的数据结构如string、Hash、List、SetSortedset等等。数据是存在内存中的&#xff0c;同时Redis支持事务…

进程信号

目录 信号入门 1. 生活角度的信号 2. 技术应用角度的信号 3. 注意 4. 信号概念 5. 用kill -l命令可以察看系统定义的信号列表 6. 信号处理常见方式概览 产生信号 1. 通过终端按键产生信号 Core Dump 2. 调用系统函数向进程发信号 3. 由软件条件产生信号 4. 硬件异…

NotePad++中安装XML Tools插件

一、概述 作为开发人员&#xff0c;日常开发中大部的数据是标准的json格式&#xff0c;但是对于一些古老的应用&#xff0c;例如webservice接口&#xff0c;由于其响应结果是xml&#xff0c;那么我们拿到xml格式的数据后&#xff0c;常常会对其进行格式化&#xff0c;以便阅读。…

Java基础——多线程

1. 线程 是一个程序内部的一条执行流程程序中如果只有一条执行流程&#xff0c;那这个程序就是单线程的程序 2. 多线程 指从软硬件上实现的多条执行流程的技术&#xff08;多条线程由CPU负责调度执行&#xff09; 2.1. 如何创建多条线程 Java通过java.lang.Thread类的对象…

HarmonyOS ArkUI(基于ArkTS) 常用组件

一 Button 按钮 Button是按钮组件&#xff0c;通常用于响应用户的点击操作,可以加子组件 Button(我是button)Button(){Text(我是button)}type 按钮类型 Button有三种可选类型&#xff0c;分别为胶囊类型&#xff08;Capsule&#xff09;、圆形按钮&#xff08;Circle&#xf…

【FPGA开发】AXI-Stream总线协议解读

文章目录 AXI-Stream概述协议中一些定义字节定义流的定义 数据流类别字节流连续对齐流连续不对齐流稀疏流 协议的信号信号列表 文章为个人理解整理&#xff0c;如有错误&#xff0c;欢迎指正&#xff01; 参考文献 ARM官方手册 《IHI0051B》 AXI-Stream概述 协议中一些定义 A…

谷粒商城のMySQL集群分库分表

文章目录 前言一、MySQL的集群架构二、MySQL主从同步实践1.创建主节点实例2.创建从节点实例3.修改配置4.开始同步4.测试主从同步效果5.小结 三、MySQL分库分表1.配置sharding-proxy2.测试sharding-proxy3.小结 前言 本篇是谷粒商城集群部署篇&#xff0c;搭建MySQL集群以及分库…

计算机组成原理对于学习嵌入式开发的意义

计算机组成原理对于学习嵌入式开发的意义 前言 最近有位同学向我咨询&#xff0c;问学习嵌入式开发需不需要学习硬件&#xff1f;进而引申到了需不需要学习计算机组成原理呢&#xff1f; 正文 首先计算机组成原理是计算机科学与技术专业的一门核心基础课程&#xff0c;它深入…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的&#xff0c;用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式&#xff1a; npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在&#xff0c;想执行一个业务订单的检查&#xff0c;该检查的代码放在test单元测试中&#xff0c;启动也是好好的&#xff0c;当点击对应的方法执行Test的时候就报错 tip&#xff1a;已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

多表查询综合归纳

目录 1. 多表关系 1.1 一对多&#xff08;多对一&#xff09; 1.2 多对多 1.3 一对一 2. 多表查询概述 2.1 熟悉表 2.2 笛卡尔积 2.3 消除笛卡尔积 2.4 多表查询分类 3. 内连接 3.1 隐式内连接 3.2 显式内连接 4. 外连接 4.1 左外连接 4.2 右外连接 5. 自连接 …