【Redis持久化】Redis企业级数据备份方案
9.1 redis数据备份方案
- 写crontab定时调度脚本去做数据备份
- 每小时cop一份rdb的备份,到一个目录中,仅仅保留最近48小时的备份
- 每天保留一份当日的rdb的备份,到一个目录中,仅仅保留最近一个月的备份。
- 每次copy备份的时候,都把旧的备份数据删除。
- 每天晚上将当前服务器上所有的数据备份,发送到一份到远程服务器上去。
9.2 每小时备份rdb快照文件脚本
#!/bin/sh
#获取当前时间日期-精确到小时
cur_date=`date +%Y%m%d%k`
#删除目录
rm -rf /usr/local/redis/snapshotting/$cur_date
#创建目录
mkdir /usr/local/redis/snapshotting/$cur_date
#拷贝rdb快照文件
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date
#删除48小时前的备份记录
del_date=`date -d -48hour + %Y%m%d%k`
rm -rf /usr/local/redis/snapshotting/$del_date
每小时 0分 执行一次 redis_rdb_copy_hourly.sh
0 * * * * sh /usr/local/redis/backup_script/redis_rdb_copy_hourly.sh
9.3 每天备份一份dump.rdb
#!/bin/sh
#获取当前时间日期-精确到天
cur_date=`date +%Y%m%d`
#删除目录
rm -rf /usr/local/redis/snapshotting/$cur_date
#创建目录
mkdir /usr/local/redis/snapshotting/$cur_date
echo "创建目录成功:/usr/local/redis/snapshotting/"$cur_date
#拷贝rdb快照文件
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date
#删除48小时前的备份记录
del_date=`date -d -1month +%Y%m%d`
rm -rf /usr/local/redis/snapshotting/$del_date
echo "删除目录成功:/usr/local/redis/snapshotting/"$del_date
每天copy一次备份
crontab -e
0 0 * * * sh /usr/local/redis/copy/redis_rdb_copy_daily.sh
9.3 appendonly.aof + dump.rdb 数据备份
- 停止redis
- 关闭aof
- 拷贝rdb
- 重启redis
- 直接在命令行热修改配置:config set appendonly yes(注意:热修改的配置不会持久到配置文件中),创建aof备份文件。
- 关闭redis
- 修改配置文件:appendonly yes
- 重启redis
参考石衫老师 《亿级流量电商详情页系统》课程笔记
亲,如果觉得还不错,点个赞呗!!!