centos redis备份策略如何制定
导读:制定目标与总体思路 明确目标:在可接受的**RPO(恢复点目标)与RTO(恢复时间目标)**下保障数据安全。对写入频繁的业务优先降低RPO,对可用性要求高的业务优先降低RTO。 策略组合:用RDB快照获取快速恢复点,用AOF追加日志提升数...
制定目标与总体思路
- 明确目标:在可接受的**RPO(恢复点目标)与RTO(恢复时间目标)**下保障数据安全。对写入频繁的业务优先降低RPO,对可用性要求高的业务优先降低RTO。
- 策略组合:用RDB快照获取快速恢复点,用AOF追加日志提升数据安全性;两者可同时开启,以兼顾性能与可靠性。
- 备份介质:本地保留热近备份,配合远程/异地存储实现多点容灾,避免单点故障。
- 自动化与校验:用Cron定时执行备份脚本,定期做完整性与可用性校验,并保留操作留痕与告警。
持久化选型与配置建议
- RDB快照
- 原理:按时间间隔生成数据集的时间点快照(默认文件名为dump.rdb),可手动触发(SAVE/BGSAVE)或按配置自动触发。
- 优点:生成快、体积小、恢复快;缺点:两次快照间可能有数据丢失;SAVE会阻塞,生产建议用BGSAVE(后台fork子进程生成)。
- 常用配置示例:save 3600 1、save 300 100、save 60 10000(分别表示在指定秒数内有指定次数写操作时触发)。
- AOF追加日志
- 原理:记录每一条写命令,重启时回放恢复。
- 同步策略:appendfsync 可选always/everysec/no;默认推荐everysec(每秒落盘,性能与安全折中)。
- 维护:通过BGREWRITEAOF重写压缩AOF,减少体积;可配置自动重写阈值。
- 双开建议:同时开启RDB与AOF,用RDB做快速恢复点,用AOF保障更细粒度数据不丢;恢复时以AOF为准(若AOF存在且有效)。
备份频率与保留策略示例
- 场景A(写入频繁,RPO≤1小时)
- RDB:每小时快照;保留48小时本地 + 同步至远程。
- AOF:开启,appendfsync everysec;定期BGREWRITEAOF;保留7天以上。
- 场景B(常规业务,RPO≤24小时)
- RDB:每日快照;保留7–30天本地 + 远程。
- AOF:开启,appendfsync everysec;保留7天以上。
- 场景C(容忍数小时数据丢失)
- RDB:每日快照;保留7天本地 + 远程。
- AOF:可选关闭或appendfsync everysec;保留3–7天。
- 自动化与清理:用Cron定时执行备份脚本,按“小时/日”分层目录存放,并自动清理过期备份;示例脚本与定时任务见下文。
备份与恢复操作步骤
- 备份
- RDB:建议用BGSAVE触发快照,脚本拷贝dump.rdb到备份目录;注意Redis数据目录由dir指定,备份与恢复需保持一致。
- AOF:可定期执行BGREWRITEAOF获取干净AOF;备份appendonly.aof文件。
- 配置与脚本:一并备份**/etc/redis/*.conf及备份脚本;脚本放入/usr/local/redis_backup/**等路径并赋权。
- 恢复
- 仅RDB恢复:建议先停止Redis,拷贝备份的dump.rdb至Redis数据目录(由dir指定),再启动;若开启AOF,恢复后可能被AOF空文件覆盖,见下文“双开恢复要点”。
- 仅AOF恢复:停止Redis,拷贝appendonly.aof至数据目录,启动后由AOF回放恢复。
- RDB+AOF双开恢复:优先使用AOF恢复(数据更完整);若必须以RDB冷备恢复,需临时关闭AOF,恢复后再开启并持久化配置。
- AOF损坏修复:可用redis-check-aof --fix修复;修复后重启验证。
自动化脚本与cron示例
- RDB按小时备份并保留48小时
- 脚本示例(/usr/local/redis_backup/rdb_backup.sh):
#!/bin/sh BACKUP_BASE="/usr/local/redis_backup" CUR_HOUR=$(date +%Y%m%d%H) mkdir -p "$BACKUP_BASE/$CUR_HOUR" cp /var/lib/redis/dump.rdb "$BACKUP_BASE/$CUR_HOUR/" DEL_HOUR=$(date -d "-48 hour" +%Y%m%d%H) rm -rf "$BACKUP_BASE/$DEL_HOUR" - Cron:每小时执行
0 * * * * /usr/local/redis_backup/rdb_backup.sh
- 脚本示例(/usr/local/redis_backup/rdb_backup.sh):
- RDB按日备份并保留30天
- 脚本示例(/usr/local/redis_backup/rdb_backup_daily.sh):
#!/bin/sh BACKUP_BASE="/usr/local/redis_backup" CUR_DAY=$(date +%Y%m%d) mkdir -p "$BACKUP_BASE/$CUR_DAY" cp /var/lib/redis/dump.rdb "$BACKUP_BASE/$CUR_DAY/" DEL_DAY=$(date -d "-30 day" +%Y%m%d) rm -rf "$BACKUP_BASE/$DEL_DAY" - Cron:每日零点执行
0 0 * * * /usr/local/redis_backup/rdb_backup_daily.sh
- 脚本示例(/usr/local/redis_backup/rdb_backup_daily.sh):
- 配置与脚本定时备份
- 备份配置文件(/backup/redis.conf.bak-YYYYMMDDHHMMSS):
#!/bin/bash BACKUP_DIR="/backup" CONFIG_FILE="/etc/redis/redis.conf" [ ! -d "$BACKUP_DIR" ] & & mkdir -p "$BACKUP_DIR" cp "$CONFIG_FILE" "$BACKUP_DIR/redis.conf.bak-$(date +%Y%m%d%H%M%S)" - Cron:每日2:00执行
0 2 * * * /path/to/backup_redis.sh
- 备份配置文件(/backup/redis.conf.bak-YYYYMMDDHHMMSS):
- 安全与校验建议
- 备份目录与传输链路使用最小权限;关键备份做异地/远程拷贝(如rsync/scp)。
- 定期抽样恢复演练,校验dump.rdb/appendonly.aof可用性与完整性;脚本加日志与错误告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos redis备份策略如何制定
本文地址: https://pptw.com/jishu/778797.html
