Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Redis 备份与恢复

内容: 原理 -> 操作命令 -> 生产建议 -> 故障恢复

一、Redis 备份方式总览

Redis 主要有 两种持久化方式(也是备份基础):

方式 文件 特点
RDB dump.rdb 快、体积小、适合备份
AOF appendonly.aof 数据更完整、恢复慢

👉 生产常用:RDB + AOF(混合持久化)

二、RDB 备份(快照)

1️⃣ 原理

  • 定期把内存数据快照写入磁盘
  • 使用 fork() 子进程完成

2️⃣ 常用配置

save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data/redis

3️⃣ 手动备份

redis-cli BGSAVE

📌 阻塞时间极短(只在 fork 时)

4️⃣ 恢复方式(重点)

步骤

  1. 停止 Redis
  2. 把 dump.rdb 放到 dir 目录
  3. 启动 Redis

Redis 启动时会自动加载。

5️⃣ 优缺点

✅ 优点

  • 文件小
  • 恢复快
  • 适合全量备份

❌ 缺点

  • 可能丢失最后一次快照后的数据

三、AOF 备份(日志)

1️⃣ 原理

  • 记录每一条写命令
  • 启动时回放命令恢复数据

2️⃣ 核心配置

appendonly yes
appendfilename appendonly.aof
appendfsync everysec   # 推荐

3️⃣ AOF 重写(压缩)

redis-cli BGREWRITEAOF

4️⃣ AOF 恢复

自动

  • Redis 启动时优先加载 AOF

手动修复(AOF 损坏)

redis-check-aof --fix appendonly.aof

5️⃣ 优缺点

✅ 优点

  • 数据更完整
  • 秒级丢数据

❌ 缺点

  • 文件大
  • 恢复慢

四、混合持久化(生产强烈推荐)

aof-use-rdb-preamble yes

效果

  • AOF 重写时生成:
  • RDB 快照 + AOF 增量
  • 启动恢复更快
  • 文件更小

五、备份文件管理(运维必会)

1️⃣ 定期拷贝备份

crontab

cp /data/redis/dump.rdb /backup/redis/dump_$(date +%F).rdb

2️⃣ 异地备份(非常重要)

  • rsync
  • 对象存储(OSS / S3)
  • NAS

3️⃣ 保留策略

保留最近 7 天

每周 1 个长期备份

六、主从 & Cluster 下的备份建议

✅ 在从节点备份

  • 避免主节点 fork 压力
  • 不影响写性能

RDB 备份推荐位置

Slave 节点

七、Redis 灾难恢复流程(真实生产)

场景 1:误删 key

# Redis 本身无法回滚
-> 从备份恢复到临时实例
-> 导出指定 key
-> 回写生产

场景 2:Redis 全量数据丢失

恢复顺序

  • 1️⃣ 启动 Redis
  • 2️⃣ 加载 AOF(若存在)
  • 3️⃣ 否则加载 RDB

场景 3:主从切换后数据不一致

  • 以主节点为准
  • 必要时重新全量同步

八、备份常见坑(非常爱考)

  • ❌ 只开 RDB,不做异地备份
  • ❌ AOF 文件无限增长
  • ❌ 在主节点做大规模备份
  • ❌ 没测试过恢复流程

九、常用工具(速查)

redis-cli BGSAVE
redis-cli BGREWRITEAOF
redis-check-rdb dump.rdb
redis-check-aof --fix appendonly.aof
INFO persistence

十、总结

Redis 主要通过 RDB 和 AOF 进行备份与恢复。

RDB 是内存快照,适合全量备份;AOF 记录写命令,数据更完整。

生产环境通常开启混合持久化,并在从节点进行定期备份,同时做异地存储。

Redis 启动时会优先加载 AOF,其次是 RDB。