4.redis数据备份以及恢复

本文介绍了一种在Linux环境下对Redis进行定期备份的方法,并详细阐述了如何通过脚本实现每小时及每日的自动备份流程。此外,还提供了当遇到不同故障情况时的数据恢复方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)
创建目录:/usr/local/redis/copy
mkdir /usr/local/redis/copy
目录下创建脚本文件: redis_rdb_copy_hourly.sh
vi redis_rdb_copy_hourly.sh
文件内容:
#! /bin/sh                        是指此脚本使用/bin/sh 来执行
cur_date=$(date +%Y%m%d%k)
rm -rf /usr/local/redis/snapshotting/$cur_date
mkdir -p /usr/local/redis/snapshotting/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date


del_date=$(date -d -48hour +%Y%m%d%k)
rm -rf /usr/local/redis/snapshotting/$del_date






目录下创建脚本文件: redis_rdb_copy_daily.sh
vi redis_rdb_copy_daily.sh
文件内容:
#! /bin/sh
cur_date=$(date +%Y%m%d)
rm -rf /usr/local/redis/snapshotting/$cur_date
mkdir -p /usr/local/redis/snapshotting/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date


del_date=$(date -d -48hour +%Y%m%d)
rm -rf /usr/local/redis/snapshotting/$del_date


赋予权限:
chmod 777 redis_rdb_copy_hourly.sh
chmod 777 redis_rdb_copy_daily.sh

(2)
创建目录/usr/local/redis/snapshotting
创建定时任务,用来定时执行脚本文件,备份rdb文件
crontab -e

在crontab文件中加入下面两行:
0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh   每小时执行一次redis_rdb_copy_hourly.sh,保存一次dump.rdb
0 0 * * * sh /usr/local/redis/copy/redis_rdb_copy_daily.sh    每天执行一次redis_rdb_copy_daily.sh,保存一次dump.rdb

注释:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,
它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute  hour  day  month  week  command


其中:
minute: 表示分钟,可以是从0到59之间的任何整数。


hour:表示小时,可以是从0到23之间的任何整数。


day:表示日期,可以是从1到31之间的任何整数。


month:表示月份,可以是从1到12之间的任何整数。


week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。


command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。




数据恢复方案


(1)redis进程挂掉,重启redis进程,基于AOF文件进行修复
AOF数据恢复之appendonly.aof损坏修复
redis-check-aof --fix /var/redis/6379/appendonly.aof
会将损坏的数据删掉
(2)linux服务器异常关机,重启服务器(我设置了redis跟系统一起启动),基于AOF文件进行修复
AOF数据恢复之appendonly.aof损坏修复
redis-check-aof --fix /var/redis/6379/appendonly.aof
会将损坏的数据删掉
(3)当前机器上最新的RDB或者AOF文件损坏,尝试从基于该机器上的较新的rdb文件副本进行数据恢复
(4)当前机器上所有的RDB或者AOF文件损坏,从远程云服务器上拉取RDB快照恢复数据




获得RDB文件进行数据恢复的步骤
(1)关闭redis,修改redis.conf配置文件(已重命名为/etc/redis/6379.conf),把appendonly yes 改为 appendonly no ,将aof关闭
(2)删除数据文件保存目录(/var/redis/6379)下的appendonly.aof和dump.rdb文件
(3)将之前已经备份的,现在要恢复到redis缓存的dump.rdb文件复制到redis数据文件保存目录(/var/redis/6379)
(4)启动redis,确定数据恢复
(5)直接在命令行热修改redis配置,appendonly no 设为 yes,打开AOF,这时,redis就会基于当前的redis缓存生成一份appendonly.aof文件,这样rdb和aof文件的数据就同步了
(6)关闭redis,修改redis.conf配置文件(已重命名为/etc/redis/6379.conf),把appendonly no 改为 appendonly yes ,将aof开启
(7)启动redis,基于aof文件恢复数据

注意:热修改redis配置不会改变本地的配置,重启后失效,所以关闭redis后要手动修改配置文件




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值