Redis线上环境容灾备份与恢复

本文介绍了如何通过脚本实现Redis的定期RDB备份,并利用crontab设置定时任务。在数据恢复方面,分别阐述了不同场景下的恢复步骤,包括进程挂掉、机器故障、数据丢失或损坏等情况,强调了RDB作为冷备和AOF作为热备的重要性。
摘要由CSDN通过智能技术生成

脚本备份,例如每小时一个rdb日志文件,我们在/usr/local/redis/目录下创建一个脚本redis_rdb_copy_daily.sh,我们将生成的rdb日志文件以日期命名,在/usr/local/snapshotting目录下存放的是日志文件,下列日志中的cur_date是当前小时的文件夹,我们将其删掉,重新创建一个当前小时命名的文件夹,将redis生成的rdb日志文件拷贝到该目录下,然后将48小时之前的日志删掉
 

#!//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


通过crontab定时器执行备份脚本:
使用命令crontab -e打开定时器文件,在其中加上执行时间的任务:

[root@newname etc]# cat crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

##############################
0 * * * * sh /usr/local/redis/copy/redis-rdb-copy-hourly.sh

这样有了定时器就会每小时执行一份备份,当我们redis意外停止,数据丢失时,可以通过最新的备份恢复数据

数据恢复方案

a.如果是redis进程挂掉,那么重启redis进程即可,直接基于AOF日志文件恢复数据
b.如果是redis进程所在机器挂掉,那么重启机器后,尝试重启redis进程,尝试直接基于AOF日志文件进行数据恢复
c.如果redis当前最新的AOF和RDB文件出现了丢失/损坏,那么可以尝试基于该机器上当前的某个最新的RDB数据副本进行数据恢复
①停止redis(命令是redis-cli shutdown),
②在配置文件中关闭aof: appendonly no
③拷贝rdb日志备份到/var/redis/6379目录下
④启动redis(命令是,先到目录/etc/init.d/目录下, ./redis_6379)
⑤尝试get一个key,确认数据恢复
⑥命令热修改redis配置,使用redis-cli连接redis,使用命令redis config set appendonly yes打开aof方式,这样aof和rdb数据就一致了
⑦手动修改6379.conf配置文件中appendonly为yes,因为热修改暂时不会写到配置文件中,所以需要手动修改,然后启动redis,再次确认数据恢复
d.如果当前机器上的所有RDB文件全部损坏,那么从远程的云服务上拉取最新的RDB快照回来恢复数据
e.如果是发现有重大的数据错误,就找最新的并且无错的进行恢复


一般RDB用来做冷备,AOF做热备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值