温馨提示×

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 冲突。

二 备份步骤

  1. 确认 Redis 数据目录与文件名
    • 在 redis-cli 中执行:
      • CONFIG GET dir
      • CONFIG GET dbfilename
    • 也可直接查看配置文件:grep -E ‘^(dir|dbfilename)’ /etc/redis/redis.conf
    • 常见值:dir /var/lib/redisdbfilename dump.rdb
  2. 触发一致性快照
    • 非阻塞方式:redis-cli bgsave(推荐)
    • 阻塞方式:redis-cli save(仅在维护窗口使用)
  3. 复制 RDB 文件到安全位置
    • 示例:
      • cp /var/lib/redis/dump.rdb /opt/backup/redis-$(date +%F).rdb
      • 远程备份:scp /var/lib/redis/dump.rdb user@backup:/path/to/backup/
  4. 校验与留痕
    • 校验文件大小与时间戳;记录备份日志,必要时保留多份历史副本。

三 恢复步骤

  1. 准备恢复环境
    • 建议先停库:systemctl stop redis(避免写入冲突)。
    • 如原机恢复,先备份现有文件:mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak。
  2. 放置 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
  3. 处理 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 数据。
  4. 启动并校验
    • 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 为二进制快照,便于离线归档与灾备迁移。

0