温馨提示×

Redis在Debian上的备份策略有哪些

小樊
73
2025-12-13 05:51:31
栏目: 云计算

Redis 在 Debian 上的备份策略

一 持久化机制选型

  • RDB 快照:在指定间隔生成内存的时间点快照,文件紧凑、恢复快,适合做定期全量备份灾难恢复;但两次快照之间可能丢失数据,且在大数据集下 fork 可能造成短暂阻塞。典型触发:save 900 1、save 300 10、save 60 10000。适合缓存优先、可接受分钟级数据丢失的场景。
  • AOF 日志:记录每个写命令,支持 appendfsync everysec(默认,最多丢1秒数据)、always、no。数据安全性更高、可精细回放,但文件通常更大、恢复更慢。适合对数据耐久性要求较高的业务。
  • 混合持久化(Redis 4.0+):开启 aof-use-rdb-preamble yes,重启时先加载 RDB 基础数据,再重放 AOF 增量,兼顾启动速度数据安全,适合大多数生产环境的默认策略。

二 备份策略组合与适用场景

策略 做法 优点 风险/注意 适用场景
RDB 定时快照 配置 save 策略 + 定时执行 BGSAVE 或远程 redis-cli --rdb 导出 文件小、传输快、恢复极快 两次快照间可能丢数据;大数据集 fork 可能阻塞 缓存、可接受分钟级丢失、需快速恢复
AOF 持续日志 启用 appendonly yes,fsync everysec,定期 BGREWRITEAOF 数据更完整,最多丢1秒 体积大、恢复慢 强一致/低丢失容忍业务
RDB + AOF 混合 同时开启 RDB 与 AOF,启用 aof-use-rdb-preamble 启动快、数据更完整 运维复杂度略高 通用生产推荐
主从复制 + 备份从库 配置 replicaof,在从库上执行 RDB/AOF 备份 不影响主库性能,可做时间点备份 异步复制有延迟窗口 高可用与备份一体化
异地/离线备份 定期将 RDB/AOF 复制到对象存储/异地机房 提升容灾能力 传输与一致性校验成本 关键业务容灾
逻辑导出/导入 使用 redis-dump/redis-syncredis-cli < dump.rdb 跨版本/跨实例迁移方便 大数据量性能差,可能不一致 迁移、开发/测试环境

三 自动化备份与保留(Debian 实践)

  • 准备与目录
    • 安装工具:sudo apt-get install redis-tools;备份目录:/opt/redis-backup;Redis 数据目录:/var/lib/redis(以实际配置为准)。
  • RDB 定时备份脚本(示例)
    • 触发 BGSAVE,等待快照完成后拷贝并压缩,保留最近7天
      #!/usr/bin/env bash
      set -e
      BACKUP_DIR="/opt/redis-backup"
      REDIS_CLI="redis-cli"
      RDB_SRC="/var/lib/redis/dump.rdb"
      TS=$(date +%Y%m%d%H%M%S)
      mkdir -p "$BACKUP_DIR"
      $REDIS_CLI BGSAVE
      sleep 10  # 等待快照完成(可按实例大小调整)
      cp "$RDB_SRC" "$BACKUP_DIR/dump-$TS.rdb"
      gzip "$BACKUP_DIR/dump-$TS.rdb"
      find "$BACKUP_DIR" -type f -mtime +7 -name '*.rdb.gz' -delete
      echo "Backup completed: $BACKUP_DIR/dump-$TS.rdb.gz"
      
    • 定时任务(每天 02:00):0 2 * * * /opt/redis-backup/backup_rdb.sh。
  • AOF 备份与重写
    • 启用 AOF:appendonly yes;按需执行 BGREWRITEAOF 控制体积;定期拷贝 appendonly.aof 到备份目录并做保留策略。
  • 远程导出(无需停库)
    • 使用 redis-cli --rdb 直接从运行中的实例导出 RDB 到备份目录或远端存储。

四 恢复流程与注意事项

  • RDB 恢复
    • 方式一:将备份的 dump.rdb 放到 Redis 配置的 dir 目录(如 /var/lib/redis),确保 dbfilename 一致,重启服务自动加载。
    • 方式二:使用 redis-cli --rdb /path/to/dump.rdb 将 RDB 导入到目标实例(适合跨实例/跨环境恢复)。
  • AOF 恢复
    • appendonly.aof 放到数据目录,配置 appendonly yes 后重启;如文件异常可用 redis-check-aof 修复后再启动。
  • 重要提示
    • 恢复前尽量停止写入或切换到维护窗口;恢复后执行 INFO persistence 检查 lastsave/lastrewrite 等指标;跨大版本恢复建议先小流量验证。
    • 若同时启用 RDB 与 AOF,Redis 重启会优先使用 AOF 恢复(数据更完整)。

五 高可用与备份协同

  • 主从复制:为生产实例配置 replicaof 6379,在从库上执行备份,避免影响主库性能;结合 BGSAVE/AOF 实现时间点备份与快速切换。
  • Keepalived VIP:在双节点上部署 Keepalived 管理 虚拟 IP,主备自动切换;配合复制与备份策略,实现故障自动接管 + 可恢复性

0