Redis 备份与恢复
内容: 原理 -> 操作命令 -> 生产建议 -> 故障恢复
Redis 主要有 两种持久化方式(也是备份基础):
| 方式 | 文件 | 特点 |
|---|---|---|
| RDB | dump.rdb | 快、体积小、适合备份 |
| AOF | appendonly.aof | 数据更完整、恢复慢 |
👉 生产常用:RDB + AOF(混合持久化)
- 定期把内存数据快照写入磁盘
- 使用 fork() 子进程完成
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data/redis
redis-cli BGSAVE
📌 阻塞时间极短(只在 fork 时)
步骤
- 停止 Redis
- 把 dump.rdb 放到 dir 目录
- 启动 Redis
Redis 启动时会自动加载。
✅ 优点
- 文件小
- 恢复快
- 适合全量备份
❌ 缺点
- 可能丢失最后一次快照后的数据
- 记录每一条写命令
- 启动时回放命令恢复数据
appendonly yes
appendfilename appendonly.aof
appendfsync everysec # 推荐
redis-cli BGREWRITEAOF
自动
- Redis 启动时优先加载 AOF
手动修复(AOF 损坏)
redis-check-aof --fix appendonly.aof
✅ 优点
- 数据更完整
- 秒级丢数据
❌ 缺点
- 文件大
- 恢复慢
aof-use-rdb-preamble yes
效果
- AOF 重写时生成:
- RDB 快照 + AOF 增量
- 启动恢复更快
- 文件更小
crontab
cp /data/redis/dump.rdb /backup/redis/dump_$(date +%F).rdb
- rsync
- 对象存储(OSS / S3)
- NAS
保留最近 7 天
每周 1 个长期备份
✅ 在从节点备份
- 避免主节点 fork 压力
- 不影响写性能
RDB 备份推荐位置
Slave 节点
# Redis 本身无法回滚
-> 从备份恢复到临时实例
-> 导出指定 key
-> 回写生产
恢复顺序
- 1️⃣ 启动 Redis
- 2️⃣ 加载 AOF(若存在)
- 3️⃣ 否则加载 RDB
- 以主节点为准
- 必要时重新全量同步
- ❌ 只开 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。