备份redis上传S3

公司数据库用到了redis,目前的备份策略是按天备份和按小时备份两种。且备份文件是直接放在数据库服务器的一个文件夹下,这样做有一个问题就是,如果一旦此台云主机被回收或者被误删,备份数据将丢失,存在安全隐患。所以,现在采用了定时备份+备份文件上传AWS S3两种方案。

注:由于我们使用的是aws的云主机,所以直接安装awscli即可,其他厂商的云主机是否能行不敢保证

安装aws cli

#安装awscli
yum install  awscli
#配置aws config
aws configure 

#此处需要按提示输入对应 Access key ID 和 Secret access key
在这里插入图片描述

#新建文件
vim test.txt
#上传测试
aws s3 cp test.txt s3://backup

上传成功
在这里插入图片描述

编写redis按天备份脚本

vim redis_rdb_copy_hourly.sh

#!/bin/sh 
cur_date=`date +%Y%m%d`
rm -rf /home/redis/snapshotting/$cur_date
mkdir /home/redis/snapshotting/$cur_date
cp /opt/module/redis/bin/dump.rdb /home/redis/snapshotting/$cur_date
#上传到S3桶
aws s3 cp /home/redis/snapshotting/$cur_date/dump.rdb s3://backup/redis/$cur_date/

del_date=`date -d -1month +%Y%m%d`
#只保留1个月以内的备份文件
rm -rf /home/redis/snapshotting/$del_date

编写redis按小时备份脚本

vim redis_rdb_copy_daily.sh

#!/bin/sh 
cur_date=`date +%Y%m%d%k`
rm -rf /home/redis/snapshotting/$cur_date
mkdir /home/redis/snapshotting/$cur_date
cp /opt/module/redis/bin/dump.rdb /home/redis/snapshotting/$cur_date

#上传到S3桶
aws s3 cp /home/redis/snapshotting/$cur_date/dump.rdb s3://backup/redis/$cur_date/

del_date=`date -d -48hour +%Y%m%d%k`
#只保留48小时内的小时备份文件
rm -rf /home/redis/snapshotting/$del_date

文件赋权
chmod 777 redis_rdb_copy_daily.sh
chmod 777 redis_rdb_copy_hourly.sh

加入定时任务

crontab -e

0 * * * * sh /home/redis/copy/redis_rdb_copy_hourly.sh
0 0 * * * sh /home/redis/copy/redis_rdb_copy_daily.sh

等待定时任务执行后到aws后台验证是否上传成功,需要注意的是,S3账号的权限请务必配置好

注:此方案也适用于其他需要备份到S3云存储的场景

猜你喜欢

转载自blog.csdn.net/XX777666/article/details/113179738