1. Redis数据持久化基础认知

假设你正在经营一家24小时营业的便利店(Redis数据库),突然遭遇停电(服务器宕机)。这时收银台的零钱抽屉(内存数据)就会全部消失。Redis通过两种持久化方案来解决这个问题:RDB(定期给货架拍照)和AOF(记录每笔交易流水)。

查看当前持久化配置的命令示例:

redis-cli config get save
# 输出示例:1) "save" 2) "3600 1 300 100 60 10000"

# 查看AOF状态
redis-cli config get appendonly
# 输出示例:1) "appendonly" 2) "yes"

2. RDB快照备份实战

2.1 自动触发机制

在redis.conf配置文件中:

save 900 1       # 15分钟内有至少1个键被改动
save 300 10      # 5分钟内有至少10个键被改动
save 60 10000    # 1分钟内有至少10000个键被改动

手动创建快照的三种方式:

# 同步保存(生产环境慎用)
redis-cli save

# 异步保存(推荐方式)
redis-cli bgsave

# 最后保存时间查询
redis-cli lastsave
2.2 备份文件管理

典型恢复演练操作流程:

# 压缩备份文件
gzip /var/lib/redis/dump.rdb

# 模拟灾难场景
sudo systemctl stop redis-server
rm /var/lib/redis/dump.rdb

# 恢复操作
gunzip dump.rdb.gz
cp dump.rdb /var/lib/redis/
chown redis:redis /var/lib/redis/dump.rdb
sudo systemctl start redis-server

3. AOF日志持久化详解

3.1 运作原理剖析

配置AOF重写规则:

auto-aof-rewrite-percentage 100  # 当前AOF文件比上次重写后文件大100%时触发
auto-aof-rewrite-min-size 64mb   # AOF文件至少达到64MB才触发重写

手动重写操作示例:

redis-cli BGREWRITEAOF
3.2 AOF恢复实验

异常断电后的恢复测试:

# 故意损坏AOF文件
echo "乱码数据" >> appendonly.aof

# 启动时自动修复
redis-check-aof --fix appendonly.aof

# 验证修复结果
head -n 10 appendonly.aof

4. 混合持久化方案(Redis 4.0+)

配置参数示例:

aof-use-rdb-preamble yes  # 启用混合持久化模式

数据恢复效果示例:

# 查看AOF文件头信息
file appendonly.aof
# 输出示例:Redis RDB file, AOF tail

5. 热备份高阶技巧

5.1 主从复制备份

创建从节点的典型命令:

# 在从服务器执行
redis-cli --cluster create 主节点IP:端口 从节点IP:端口 --cluster-replicas 1
5.2 在线备份策略

不停止服务的备份方案:

# 创建临时从节点
redis-cli --cluster add-node 新节点IP:端口 主节点IP:端口 --cluster-slave

# 在新节点执行备份
ssh 新节点IP "redis-cli save && gzip /var/lib/redis/dump.rdb"

# 获取备份文件
scp 新节点IP:/var/lib/redis/dump.rdb.gz .

6. 云环境专项方案

AWS ElastiCache备份示例:

# 创建手动备份
aws elasticache create-snapshot \
--cache-cluster-id my-cluster \
--snapshot-name manual-backup-202308

# 恢复备份到新集群
aws elasticache restore-from-snapshot \
--snapshot-name manual-backup-202308 \
--cache-cluster-id restored-cluster

7. 技术方案对比矩阵

维度 RDB方案 AOF方案 混合方案
恢复速度 闪电级(二进制加载) 龟速(命令回放) 闪电级+RDB基础
数据完整性 可能丢失分钟级数据 最多丢失1秒数据 与AOF相同
文件大小 紧凑(二进制压缩) 庞大(文本日志) RDB头+AOF尾
CPU消耗 高峰值(bgsave时) 持续中等消耗 综合两者特点
适用场景 灾难恢复、版本回溯 金融交易、订单系统 通用场景

8. 真实场景应用案例

某电商平台大促备战方案:

# 提前三天增加备份频率
redis-cli config set save "300 10 60 100"
redis-cli config rewrite

# 压力测试后回滚数据
scp pre_sale_backup.rdb redis-prod:/data/
redis-cli shutdown
# 等待自动重启后数据恢复

9. 避坑指南与注意事项

  1. 版本兼容陷阱:恢复时需确保Redis主次版本完全一致
  2. 磁盘空间监控:AOF文件可能膨胀至原始数据10倍
  3. 备份验证策略:建议每月执行恢复演练
  4. 权限控制要点:备份文件必须设置600权限
  5. 网络传输加密:跨机房备份需启用SSH隧道

10. 最佳实践路线

  1. 生产环境启用RDB+AOF混合模式
  2. 每天异地备份到对象存储
  3. 从节点常备用于实时备份
  4. 使用校验和验证备份完整性
  5. 保留最近7天的历史备份