备份方案
1、 写crontab定时调度脚本去做数据备份;
2、每小时copy一份rdb的备份到一个目录中去,仅仅保留最近48小时的备份;
3、每天保留一份当日的rdb的备份到一个目录中去,仅仅保留最近1个月的备份;
4、每次copy备份的时候,都把太旧的备份删除;
5、每天晚上将当前服务器上的所有数据备份,发送一份到远程的云服务器上去。
crontab -ef1 f2 f3 f4 f5* * * * *- - - - -| | | | || | | | +----- 星期中星期几 (0 - 6) (星期天 为0)| | | +---------- 月份 (1 - 12)| | +--------------- 一个月中的第几天 (1 - 31)| +-------------------- 小时 (0 - 23)+------------------------- 分钟 (0 - 59)
定时脚本
每小时copy一次,删除48小时前的数据
crontab -e0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh
redis_rdb_copy_hourly.sh#!/bin/shcur_date=`date +%Y%m%d%k`rm -rf /usr/local/redis/snapshotting/$cur_datemkdir /usr/local/redis/snapshotting/$cur_datecp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_datedel_date=`date -d -48hour +%Y%m%d%k`rm -rf /usr/local/redis/snapshotting/$del_date
每天copy一次,删除上个月前的数据
crontab -e0 0 * * * sh /usr/local/redis/copy/redis_rdb_copy_daily.sh
redis_rdb_copy_daily.sh#!/bin/shcur_date=`date +%Y%m%d`rm -rf /usr/local/redis/snapshotting/$cur_datemkdir /usr/local/redis/snapshotting/$cur_datecp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_datedel_date=`date -d -1month +%Y%m%d`rm -rf /usr/local/redis/snapshotting/$del_date
数据恢复方案
(1)如果redis进程挂掉,那么重启redis进程即可。redis会自动基于当前的AOF日志文件恢复数据;
(2)如果redis进程所在的机器挂掉,那么重启redis进程,尝试直接基于AOF日志文件进行数据恢复;如果AOF文件存在破损,可以使用命令redis-check-aof fix进行修复;
(3)如果redis最新的AOF和RDB文件丢失/损坏,可以基于机器备份的最新的RDB数据副本进行数据恢复。
