centos redis备份与恢复方法
小樊
31
2026-01-02 02:43:20
CentOS 7 上 Redis 的备份与恢复
一 核心思路与准备
- 在 CentOS 7 上,Redis 的持久化默认使用 RDB 快照,数据文件通常为 dump.rdb,默认数据目录为 /var/lib/redis。若你修改过配置,请以下文方法确认实际目录与文件名。为获得一致性快照,优先使用后台快照命令 BGSAVE,避免 SAVE 阻塞服务。备份前建议确认 Redis 是否启用了 AOF(若存在 .aof 文件则代表启用),避免恢复时与 RDB 冲突。
二 备份步骤
- 确认 Redis 数据目录与文件名
- 在 redis-cli 中执行:
- CONFIG GET dir
- CONFIG GET dbfilename
- 也可直接查看配置文件:grep -E ‘^(dir|dbfilename)’ /etc/redis/redis.conf
- 常见值:dir /var/lib/redis,dbfilename dump.rdb。
- 触发一致性快照
- 非阻塞方式:redis-cli bgsave(推荐)
- 阻塞方式:redis-cli save(仅在维护窗口使用)
- 复制 RDB 文件到安全位置
- 示例:
- cp /var/lib/redis/dump.rdb /opt/backup/redis-$(date +%F).rdb
- 远程备份:scp /var/lib/redis/dump.rdb user@backup:/path/to/backup/
- 校验与留痕
- 校验文件大小与时间戳;记录备份日志,必要时保留多份历史副本。
三 恢复步骤
- 准备恢复环境
- 建议先停库:systemctl stop redis(避免写入冲突)。
- 如原机恢复,先备份现有文件:mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak。
- 放置 RDB 文件并修复权限
- cp -p /path/to/backup/dump.rdb /var/lib/redis/
- chown redis:redis /var/lib/redis/dump.rdb
- chmod 660 /var/lib/redis/dump.rdb
- 处理 AOF(关键点)
- 若仅需从 RDB 时间点恢复,建议临时关闭 AOF:
- 编辑 /etc/redis/redis.conf,将 appendonly 设为 no;
- 或将现有 .aof 文件重命名备份(如 mv /var/lib/redis/*.aof /var/lib/redis/appendonly.aof.bak)。
- 说明:Redis 重启时若 AOF 开启,会优先以 AOF 恢复,从而可能忽略本次的 RDB 数据。
- 启动并校验
- systemctl start redis
- 登录验证:redis-cli ping;keys *(或业务侧抽样校验)。
四 自动化与注意事项
- 自动化备份示例(crontab)
- 每天 02:00 触发快照并拷贝到备份机:
- 0 2 * * * /usr/local/bin/redis-cli bgsave && scp /var/lib/redis/dump.rdb user@backup:/path/to/backup/redis-$(date +%F).rdb
- 注意:生产环境建议先本地落盘成功再执行远程拷贝,并为 scp 配置免密或密钥认证。
- 重要注意事项
- 使用 BGSAVE 而非 SAVE,避免高峰期阻塞。
- 恢复时若 AOF=yes,会优先载入 AOF,可能导致 RDB 不被加载;从 RDB 恢复请临时关闭 AOF。
- 权限与属主需为 redis:redis,权限建议 660,否则可能无法加载。
- 恢复前停止写入(停库或切到维护模式),避免数据漂移。
- 跨版本/跨平台恢复需谨慎,建议先在测试环境验证;RDB 为二进制快照,便于离线归档与灾备迁移。