首页/数据/备份与容灾速查/Redis 备份与恢复操作
数据库与云备份56 条

Redis 备份与恢复操作

在线备份:BGSAVE 生成 RDB 或 redis-cli --rdb 远程拉取文件;恢复时停机替换 dump.rdb 并先校验完整性,集群场景优先从副本节点备份。

备份与容灾速查数据更新于 2026-10-13

Redis 备份与恢复怎么做

Redis 的持久化产物是 RDB 快照与 AOF 追加日志。备份的常规做法是在线触发一次 BGSAVE 生成快照,或直接用 redis-cli --rdb 把快照拉到本地文件;恢复时停机替换持久化文件再启动,启动前先用 redis-check-rdb 校验完整性,否则可能读到损坏文件后实例直接拒绝启动。

基本信息

适用平台Redis 5.0 及以上(集群模式与哨兵模式要点相近)
备份手段BGSAVE 后台生成快照;redis-cli --rdb 直接拉取快照文件
校验工具redis-check-rdb 校验快照;AOF 场景用 redis-check-aof
恢复前提实例停机、持久化文件路径与文件名与配置一致、属主正确

典型使用场景

  • 日常全量备份:定时 BGSAVE 并把快照复制到对象存储或备份机
  • 发布前留底:结构变更或数据迁移前先拉一份 RDB 存底
  • 灾难恢复:实例数据目录损坏时用最近快照重建
  • 集群备份:从副本节点导出,避免影响主节点性能
  • 跨环境取数:把快照拉到测试环境恢复一份数据用于验证

备份

备份
# 后台生成快照(生产大实例建议在副本节点执行)
redis-cli BGSAVE
# 确认快照完成时间戳是否更新
redis-cli LASTSAVE
# 远程拉取快照文件到备份机,不落地在实例所在磁盘
redis-cli --rdb /backup/redis-$(date +%F).rdb
# 校验产物完整性
redis-check-rdb /backup/redis-$(date +%F).rdb

恢复

恢复
# 停实例,避免持久化文件被占用或覆盖
sudo systemctl stop redis
# 替换快照文件并修正属主
sudo cp /backup/redis-2026-10-13.rdb /var/lib/redis/dump.rdb
sudo chown redis:redis /var/lib/redis/dump.rdb
# 启动后确认数据量是否与备份时间点相符
sudo systemctl start redis
redis-cli DBSIZE

持久化与备份要点

项说明注意点
RDB 快照某一时间点的全量数据文件BGSAVE 会 fork 子进程,大实例注意内存与延迟抖动
AOF追加写日志,恢复更完整但体积大已开启 AOF 时实例优先加载 AOF,只替换 RDB 可能不生效
LASTSAVE最近一次成功生成快照的时间戳数值未更新说明快照实际没生成成功
redis-check-rdb校验快照文件完整性恢复前必做,避免读到损坏文件后实例起不来
集群模式各分片各自持有数据备份需覆盖全部分片,缺片即数据不完整
开启 appendonly 的实例优先从 AOF 恢复:只替换 dump.rdb 可能看不到任何变化,恢复前先确认实例的持久化配置。
避免在大内存主节点上频繁执行 BGSAVE:fork 与磁盘写入会带来明显延迟抖动,必要时改在副本节点备份。

易错点

  • 在大内存主节点直接 BGSAVE:fork 与写盘造成延迟抖动,影响线上请求
  • 恢复前不校验 RDB:读到损坏文件后实例拒绝启动,恢复窗口被进一步压缩
  • 只替换 dump.rdb 而实例使用的是 AOF:恢复看似成功但数据没有任何变化
  • 集群只备份部分分片:恢复后数据缺失,且缺失范围难以界定

数据来源与参考

  • Redis 文档(BGSAVE / redis-cli --rdb / redis-check-rdb)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌