debian

Debian Redis配置备份策略

小樊
37
2025-11-17 12:59:46
栏目: 云计算

Debian Redis配置备份策略

一 目标与原则

二 持久化配置基线

三 备份策略与频率

四 备份脚本与定时任务示例

#!/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."

五 恢复流程与验证

以上策略在 Debian 上可直接落地:先固化持久化基线(RDB+AOF 的组合与阈值),再用定时脚本对 RDB/AOF配置/元数据 做分层冷备与异地同步,最后以标准化的恢复流程与校验项确保可恢复性与一致性。

0
看了该问题的人还看了