Debian Redis配置备份策略
导读:Debian Redis配置备份策略 一 目标与原则 覆盖两类资产:一是 Redis 的持久化数据文件(RDB 的 dump.rdb、AOF 的 appendonly.aof),二是 Redis 的配置与元数据(如 /etc/redis/...
Debian Redis配置备份策略
一 目标与原则
- 覆盖两类资产:一是 Redis 的持久化数据文件(RDB 的 dump.rdb、AOF 的 appendonly.aof),二是 Redis 的配置与元数据(如 /etc/redis/redis.conf、/var/lib/redis/ 目录、启动脚本、systemd 单元、密码/ACL 文件等)。
- 策略分层:用持久化保障“近实时可恢复”,用定时拷贝做“离线/异地冷备”,用配置备份保障“快速还原与一致性”。
- 安全与合规:备份文件含敏感数据,需限制权限(如 600)、加密与异地存放;对生产环境建议“一主多从 + 从库开启 AOF + 主库定时 RDB 冷备”的组合,提高可用性与可恢复性。
二 持久化配置基线
- RDB(快照):适合做定时冷备与快速恢复。示例基线(可按业务调整阈值):
- save 900 1
- save 300 10
- save 60 10000
- 手动触发后台快照:redis-cli bgsave;查看最近一次快照时间:redis-cli lastsave
- AOF(追加日志):适合更高数据安全性。示例基线:
- appendonly yes
- appendfsync everysec(官方常用建议,最多丢失约1秒数据)
- 手动重写 AOF(压缩日志体积):redis-cli bgrewriteaof
- 恢复优先级:同时启用时,Redis 启动会优先加载 AOF;仅启用其一则加载对应文件。此特性决定了“主库 RDB 冷备 + 从库 AOF 保障”的实用组合。
三 备份策略与频率
- 配置与元数据备份
- 建议每次变更前/后执行一次“全量拷贝”,并纳入变更流程。
- 示例命令(Debian 常见路径,按实际调整):
- 配置文件:sudo cp /etc/redis/redis.conf /backup/redis/conf/redis.conf-$(date +%F_%H%M%S)
- 数据目录:sudo rsync -a /var/lib/redis/ /backup/redis/data/$(date +%F_%H%M%S)/
- systemd 单元:sudo cp /lib/systemd/system/redis-server.service /backup/redis/unit/
- 校验与权限:sha256sum 备份文件;chmod 600 敏感文件
- 数据文件冷备(RDB 为主)
- 推荐“每小时保留最近 48 小时 + 每天保留最近 30 天 + 异地/云端 同步”的“3-2-1”思路:
- 每小时:拷贝当前 RDB 到 hourly/YYYYMMDDHH/,清理 48 小时前
- 每天:拷贝当前 RDB 到 daily/YYYYMMDD/,清理 30 天前
- 异地:每日将当日备份同步至对象存储/备份服务器
- 触发时机:优先在从库上执行 bgsave 获取一致性快照,避免影响主库性能;主库仅在维护窗口执行。
- 推荐“每小时保留最近 48 小时 + 每天保留最近 30 天 + 异地/云端 同步”的“3-2-1”思路:
- 自动化与校验
- 使用 cron 定时执行备份脚本;脚本内需做“快照完成校验(lastsave)”“拷贝成功校验(sha256)”“清理旧备份”“记录日志/告警”。
四 备份脚本与定时任务示例
- 示例目录结构
- /backup/redis/
- conf/(配置与元数据)
- data/(RDB/AOF 拷贝)
- logs/(备份日志)
- /backup/redis/
- 示例脚本 backup_redis.sh(按需启用 AOF 拷贝)
#!/usr/bin/env bash
set -Eeuo pipefail
REDIS_CLI="redis-cli"
CONF_DIR="/etc/redis"
DATA_DIR="/var/lib/redis"
BACKUP_BASE="/backup/redis"
DATE=$(date +%F_%H%M%S)
HOURLY_DIR="$BACKUP_BASE/data/hourly/$(date +%Y%m%d%H)"
DAILY_DIR="$BACKUP_BASE/data/daily/$(date +%Y%m%d)"
LOG="$BACKUP_BASE/logs/backup_$DATE.log"
mkdir -p "$HOURLY_DIR" "$DAILY_DIR" "$BACKUP_BASE/logs"
log() {
echo "$(date '+%F %T') $*" | tee -a "$LOG";
}
# 1) 触发快照并等待完成
log "Triggering BGSAVE..."
$REDIS_CLI bgsave
for i in {
1..30}
;
do
LAST=$( $REDIS_CLI lastsave )
CURR=$(date +%s)
if (( CURR - LAST <
= 5 ));
then
log "BGSAVE completed."
break
fi
sleep 2
done
# 2) 拷贝 RDB
RDB_SRC="$DATA_DIR/dump.rdb"
RDB_DST="$HOURLY_DIR/dump_$DATE.rdb"
if [[ -f "$RDB_SRC" ]];
then
cp -a "$RDB_SRC" "$RDB_DST"
log "Copied RDB to $RDB_DST ($(stat -c%s "$RDB_DST") bytes)"
else
log "ERROR: $RDB_SRC not found!"
exit 2
fi
# 3) 可选:拷贝 AOF
AOF_SRC="$DATA_DIR/appendonly.aof"
if [[ -f "$AOF_SRC" ]];
then
AOF_DST="$HOURLY_DIR/appendonly_$DATE.aof"
cp -a "$AOF_SRC" "$AOF_DST"
log "Copied AOF to $AOF_DST ($(stat -c%s "$AOF_DST") bytes)"
fi
# 4) 生成校验
sha256sum "$RDB_DST" >
>
"$LOG"
[[ -f "$AOF_DST" ]] &
&
sha256sum "$AOF_DST" >
>
"$LOG"
# 5) 每日归档与清理
ln -snf "$RDB_DST" "$DAILY_DIR/dump_latest.rdb"
[[ -f "$AOF_DST" ]] &
&
ln -snf "$AOF_DST" "$DAILY_DIR/appendonly_latest.aof"
# 保留策略:近48小时小时级,近30天日级
find "$BACKUP_BASE/data/hourly" -mindepth 1 -maxdepth 1 -type d -mtime +2 -exec rm -rf {
}
+
find "$BACKUP_BASE/data/daily" -mindepth 1 -maxdepth 1 -type d -mtime +30 -exec rm -rf {
}
+
log "Backup finished."
- 定时任务(/etc/crontab 或 crontab -e)
- 每小时第 5 分钟执行:5 * * * * root /usr/local/bin/backup_redis.sh
- 每日 02:00 归档与异地同步示例:0 2 * * * root /usr/bin/rsync -a --delete /backup/redis/ backup@backup.example.com:/backup/redis/ & & logger “Redis backup synced to backup.example.com”
- 安全建议
- 备份目录权限:chmod 700 /backup/redis;敏感文件 chmod 600
- 凭据安全:脚本中避免明文密码,使用 ~/.redis-cli-credentials、环境变量或 systemd 凭据;限制备份服务器访问源。
五 恢复流程与验证
- 从 RDB 恢复(示例)
- 建议先停止 Redis:redis-cli shutdown(或 systemctl stop redis-server)
- 备份现有数据目录:mv “$DATA_DIR/dump.rdb” “$DATA_DIR/dump.rdb.bak_$(date +%F_%H%M%S)”
- 拷贝备份:cp /backup/redis/data/hourly/YYYYMMDDHH/dump_*.rdb “$DATA_DIR/dump.rdb”
- 启动:systemctl start redis-server 或 redis-server /etc/redis/redis.conf
- 验证:redis-cli ping、info persistence、dbsize、抽样 key 校验
- 从 AOF 恢复
- 仅启用 AOF 时,将 appendonly.aof 放置到数据目录,确保 appendonly yes,启动即可自动重放
- 同时使用 RDB 与 AOF 时,Redis 启动优先加载 AOF;如需以 RDB 为准,先临时关闭 AOF 再启动,随后再开启并做一次 bgrewriteaof
- 通用验证清单
- 校验备份完整性(sha256)、恢复后 key 数量与关键业务查询、持久化状态(info persistence 中 rdb_last_save_time/aof_enabled)、复制拓扑与从库延迟(如启用主从)
以上策略在 Debian 上可直接落地:先固化持久化基线(RDB+AOF 的组合与阈值),再用定时脚本对 RDB/AOF 与 配置/元数据 做分层冷备与异地同步,最后以标准化的恢复流程与校验项确保可恢复性与一致性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Redis配置备份策略
本文地址: https://pptw.com/jishu/749443.html
