Redis数据备份和恢复

数据备份方案,RDB非常适合做冷备,每次生成之后,就不会再有修改了。
(1)写crontab定时调度脚本去做数据备份。
(2)每小时都copy一份rdb的备份,到一个目录中去,仅仅保留最近48小时的备份。
(3)每天都保留一份当日的rdb的备份,到一个目录中去,仅仅保留最近1个月的备份。
(4)每次copy备份的时候,都把太旧的备份给删了。
(5)每天晚上将当前服务器上所有的数据备份,发送一份到远程的云服务上去。

一、每小时备份,删除48小时前的数据

redis_rdb_hourly.sh

#!/bin/sh 

cur_date=`date +%Y%m%d%H`
rm -rf /usr/local/redis/backup/$cur_date
mkdir /usr/local/redis/backup/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/backup/$cur_date

del_date=`date -d -48hour +%Y%m%d%H`
rm -rf /usr/local/redis/backup/$del_date
crontab -e
0 * * * * sh /usr/local/redis/backup/redis_rdb_hourly.sh

二、每天备份,删除1个月前的数据

redis_rdb_daily.sh

#!/bin/sh 

cur_date=`date +%Y%m%d`
rm -rf /usr/local/redis/backup/$cur_date
mkdir /usr/local/redis/backup/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/backup/$cur_date

del_date=`date -d -1month +%Y%m%d`
rm -rf /usr/local/redis/backup/$del_date
crontab -e
0 0 * * * sh /usr/local/redis/backup/redis_rdb_daily.sh

三、数据恢复

(1)如果是redis进程挂掉,重启redis进程即可,直接基于AOF日志文件恢复数据,注意默认是开启RDB关闭AOF,所以需要开启,两个同时开启默认用AOF恢复。

(2)如果是redis进程所在机器挂掉,那么重启机器后,尝试重启redis进程,尝试直接基于AOF日志文件进行数据恢复。AOF没有破损,也是可以直接基于AOF恢复的。

AOF append-only,顺序写入,如果AOF文件破损,那么用redis-check-aof fix

(3)如果redis当前最新的AOF和RDB文件出现了丢失/损坏,那么可以尝试基于该机器上当前的某个最新的RDB数据副本进行数据恢复。

当前最新的AOF和RDB文件都出现了丢失/损坏到无法恢复,一般不是机器的故障,人为。

找到RDB最新的一份备份,小时级的备份可以了,小时级的肯定是最新的,copy到redis里面去,就可以恢复到某一个小时的数据。

特别注意

数据恢复

所以我们要先停止redis,删除appendonly.aof,在配置中关闭aof,然后拷贝一份rdb过来,再重启redis,这个时候数据就能恢复了,然后直接在命令行热修改redis配置,打开aof,这个redis就会将内存中的数据对应的日志,写入aof文件中,此时aof和rdb两份数据文件的数据就同步了,然后再停止redis,在配置中开启aof,再重启redis。

config get appendonly
config set appendonly yes

关键点:热修改不会修改配置文件,所以最后必须手动修改,数据恢复优先使用的是appendonly.aof,只要开着aof,redis启动的时候就会使用它,如果不存在就会生成一个新的空的appendonly.aof文件,所以必须通过热修改配置来让aof和rdb数据同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值