以下是关于 Redis 数据备份与恢复 的系统性讲解,涵盖 RDB 快照、AOF 持久化机制、混合持久化、手动备份与恢复、自动化策略等内容,适合构建高可用、可靠的数据服务体系。
📚 目录
🧠 Redis 持久化机制概述
Redis 提供两种核心的持久化方式:
机制 | 文件类型 | 特点 |
---|---|---|
RDB(快照) | dump.rdb | 占用小,恢复快,适合冷备份 |
AOF(追加日志) | appendonly.aof | 数据完整性高,适合热备份 |
Redis 4.0+ 支持混合持久化,将二者优点结合。
📸 RDB 快照持久化
触发方式
- 自动快照触发(默认配置):
save 900 1 # 900秒内至少有1次写操作 save 300 10 # 300秒内至少有10次写操作 save 60 10000 # 60秒内至少有10000次写操作
- 手动触发:
SAVE # 同步保存(阻塞) BGSAVE # 异步保存(推荐)
文件路径
默认保存为 dump.rdb
,路径由配置项 dir
和 dbfilename
决定。
优点
- 二进制格式恢复快
- 文件体积小,适合冷备份和定时快照
缺点
- 有数据丢失风险(上一次快照之后的数据)
✍️ 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
🔁 数据恢复操作
步骤:
- 停止 Redis 服务:
systemctl stop redis
- 替换持久化文件:
- RDB 恢复:
cp /backup/dump_2025-04-01.rdb /var/lib/redis/dump.rdb
- AOF 恢复:
cp /backup/appendonly.aof /var/lib/redis/appendonly.aof
- RDB 恢复:
- 重启 Redis:
systemctl start redis
注意:确保备份文件与 Redis 版本兼容,且 Redis 启动时持久化设置一致。
🛠️ 生产环境备份建议
- ✅ 同时开启 RDB + AOF:结合快照与高可用保障
- ✅ 定期离线备份持久化文件:上传至异地(如 S3)
- ✅ 测试恢复流程:定期在测试环境验证备份有效性
- ✅ 使用主从复制:实现高可用架构,提升恢复能力
- ✅ 版本控制备份文件:按日期命名并定期清理旧数据
📎 参考资料
如你需要自动化备份脚本、备份到云存储、搭建高可用主从+哨兵架构或结合 Docker 的备份方案,也可以继续向我提出。是否需要我生成一份生产环境 Redis 备份与恢复脚本模板?
发表回复