温馨提示×

Redis在Ubuntu上的备份与恢复方法

小樊
35
2025-12-04 21:44:52
栏目: 云计算

Redis在Ubuntu上的备份与恢复方法

一 关键要点与前置检查

  • 确认 Redis 数据目录与持久化文件位置:在 redis-cli 中执行
    • config get dir(常见为:/var/lib/redis
    • 查看目录下是否存在 dump.rdb;若启用 AOF,还会有 appendonly.aof
  • 如配置了密码,后续命令需先认证:auth yourpassword
  • 建议先停写或手动落盘,再复制 RDB,减少数据丢失风险(RDB 生成过程使用临时名,完成后原子 rename,运行时可安全复制)。

二 备份方法

  • 方法A 手动触发落盘并复制 RDB(适合临时备份)
    1. 登录并(如有密码)认证:redis-cli → auth yourpassword
    2. 触发同步快照:save(或 bgsave,后台异步)
    3. 复制数据文件:sudo cp /var/lib/redis/dump.rdb /path/to/backup/dump-$(date +%F).rdb
    4. 如需保留多份,可用时间戳或轮转脚本管理备份文件
  • 方法B 远程导出 RDB(不依赖服务器文件系统权限)
    • 在备份机执行:redis-cli -h HOST -p 6379 -a PASSWORD --rdb /path/to/dump.rdb
  • 方法C 自动化与增量备份(推荐用于生产)
    • 安装 rdiff-backup:sudo apt-get install -y rdiff-backup
    • 一次性备份:rdiff-backup --preserve-numerical-ids /var/lib/redis /path/to/backup/redis
    • 定时任务(每日午夜):echo ‘0 0 * * * rdiff-backup --preserve-numerical-ids --no-file-statistics /var/lib/redis /path/to/backup/redis’ | sudo tee /etc/cron.d/redis-backup。

三 恢复方法

  • 场景1 从 RDB 文件恢复到本机或新机器
    1. 建议先停止 Redis:sudo systemctl stop redis-server
    2. 备份当前数据文件:sudo mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak
    3. 如启用 AOF,先临时关闭并移走 AOF,避免恢复时被重放:
      • 编辑 /etc/redis/redis.conf:appendonly no
      • 或 sudo mv /var/lib/redis/*.aof /var/lib/redis/appendonly.aof.bak
    4. 拷贝备份的 RDB 到数据目录并修正属主属组:
      • sudo cp -p /path/to/backup/dump.rdb /var/lib/redis/dump.rdb
      • sudo chown redis:redis /var/lib/redis/dump.rdb
      • sudo chmod 660 /var/lib/redis/dump.rdb
    5. 启动 Redis:sudo systemctl start redis-server
    6. 验证:redis-cli → GET yourkey;info persistence 查看持久化状态
    7. 如需重新启用 AOF:redis-cli → BGREWRITEAOF,待完成后将 redis.conf 的 appendonly 改回 yes 并重启
  • 场景2 使用 rdiff-backup 时间点恢复
    • 恢复到最近一次:rdiff-backup -r now /path/to/backup/redis/dump.rdb /var/lib/redis/dump.rdb
    • 恢复到指定时间:rdiff-backup -r 2025-12-01T00:00:00 /path/to/backup/redis/dump.rdb /var/lib/redis/dump.rdb
  • 场景3 远程机器恢复
    • 先用 --rdb 导出到备份机,再按场景1步骤恢复到目标机器。

四 常见问题与排错

  • 恢复后数据不一致或缺失
    • 确认恢复前已执行 save/bgsave;如启用 AOF,恢复时临时关闭 AOF 并避免重放旧日志,恢复完成后再 BGREWRITEAOF 重建 AOF
  • 权限导致 Redis 无法加载 RDB
    • 确保 /var/lib/redis/dump.rdb 属主为 redis:redis,权限 660
  • 恢复后 Redis 无法启动
    • 查看状态与日志:sudo systemctl status redis-server、sudo journalctl -u redis-server.service
    • 检查配置、端口占用、磁盘空间与内存等资源是否异常。

0