以下是关于 Redis 数据备份与恢复 的系统性讲解,涵盖 RDB 快照、AOF 持久化机制、混合持久化、手动备份与恢复、自动化策略等内容,适合构建高可用、可靠的数据服务体系。


📚 目录

  1. Redis 持久化机制概述
  2. RDB 快照持久化
  3. AOF 持久化机制
  4. 混合持久化(Redis 4.0+)
  5. 数据备份操作
  6. 数据恢复操作
  7. 生产环境备份建议
  8. 参考资料

🧠 Redis 持久化机制概述

Redis 提供两种核心的持久化方式:

机制文件类型特点
RDB(快照)dump.rdb占用小,恢复快,适合冷备份
AOF(追加日志)appendonly.aof数据完整性高,适合热备份

Redis 4.0+ 支持混合持久化,将二者优点结合。


📸 RDB 快照持久化

触发方式

  1. 自动快照触发(默认配置): save 900 1 # 900秒内至少有1次写操作 save 300 10 # 300秒内至少有10次写操作 save 60 10000 # 60秒内至少有10000次写操作
  2. 手动触发SAVE # 同步保存(阻塞) BGSAVE # 异步保存(推荐)

文件路径

默认保存为 dump.rdb,路径由配置项 dirdbfilename 决定。

优点

  • 二进制格式恢复快
  • 文件体积小,适合冷备份和定时快照

缺点

  • 有数据丢失风险(上一次快照之后的数据)

✍️ AOF 持久化机制

开启方式

在配置文件中启用:

appendonly yes
appendfilename "appendonly.aof"

写入策略

appendfsync always      # 每次写操作都同步(最安全,最慢)
appendfsync everysec    # 每秒同步一次(推荐,默认)
appendfsync no          # 由操作系统决定何时刷新(最快,风险最高)

优点

  • 数据完整性高,最多丢失 1 秒数据(everysec 模式)
  • 文件内容为 Redis 命令,具可读性

缺点

  • 文件大,恢复慢
  • 初始加载时间长

⚡ 混合持久化(Redis 4.0+)

结合 RDB 的快速恢复与 AOF 的高可用性,默认开启:

aof-use-rdb-preamble yes

生成的 AOF 文件头部是 RDB 格式,后面追加命令日志。


💾 数据备份操作

方法一:直接复制持久化文件

RDB 备份:

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

AOF 备份:

cp /var/lib/redis/appendonly.aof /backup/aof_$(date +%F).aof

方法二:开启 Redis 快照脚本 + crontab 定时任务

0 2 * * * /usr/bin/redis-cli BGSAVE
0 3 * * * cp /var/lib/redis/dump.rdb /backup/redis_backup.rdb


🔁 数据恢复操作

步骤:

  1. 停止 Redis 服务: systemctl stop redis
  2. 替换持久化文件:
    • RDB 恢复: cp /backup/dump_2025-04-01.rdb /var/lib/redis/dump.rdb
    • AOF 恢复: cp /backup/appendonly.aof /var/lib/redis/appendonly.aof
  3. 重启 Redis: systemctl start redis

注意:确保备份文件与 Redis 版本兼容,且 Redis 启动时持久化设置一致。


🛠️ 生产环境备份建议

  • 同时开启 RDB + AOF:结合快照与高可用保障
  • 定期离线备份持久化文件:上传至异地(如 S3)
  • 测试恢复流程:定期在测试环境验证备份有效性
  • 使用主从复制:实现高可用架构,提升恢复能力
  • 版本控制备份文件:按日期命名并定期清理旧数据

📎 参考资料


如你需要自动化备份脚本、备份到云存储、搭建高可用主从+哨兵架构或结合 Docker 的备份方案,也可以继续向我提出。是否需要我生成一份生产环境 Redis 备份与恢复脚本模板?