linux 定时任务备份至七牛

哈根达斯
2022-04-18 / 0 评论 / 120 阅读 / 正在检测是否收录...

场景

生产数据定时备份的意义大家应该都是知道的,很多人备份只是备份到了本地,但是也会存在一定的隐患,比如客户一直不用系统,我们也不去注意,哪天服务器到期了过了几个月客户突然要用方向数据没了。。。

使用到的工具

主要看大家的服务器的安装情况,如果是安装了宝塔面板这种,有定时任务工具直接使用,而且也有免费的七牛云插件,设置起来超级简单,如果安装宝塔的不懂设置可以评论区留言,实在是太简单了本文就不讲了,说实话是会点鼠标就可以弄了

基于linux系统内备份

大概的意思就是你的mysql是自己用命令安装的。

  • 七牛平台
  • shell脚本
  • linux定时任务

需要七牛云账号,用户需要自己创建,或者其它用其它云盘原理都是一样的

(一)下载qshell工具并安装设置

1. 工具下载
说明文档与下载地址: 七牛工具下载

工具是七牛官方提供的,下载工具后传到服务器,主要看自己服务器的架构,我的服务是linux x86的,根据自己服务器去下载,把文件上传至服务目录/home/backup/shell 目录。并赋予权限chomd +x qshell

2. 登录设置七牛云账号
注意需要在工具目录下执行,如果需要任何目录执行需要添加环境变量可查看官方文档说明,更多说明以官方最新文档为准

# 参数说明可自己根据情况修改
#ak :官方获取
#sk: 官方平台获取
#name : 任意用户名,不是七牛的账户,比如 db-test
qshell account <ak> <sk> <name>
#完成命令参考
(二) shell编辑脚本

在目录/home/backup/shell 下新建脚本backup.sh

#!/bin/sh
# mysql data backup script
#
# use mysqldump --help,get more detail.
# 需要设置环境变量,crond中默认读取不到我们的一些环境
PATH=$PATH:/home/backup/shell
export PATH

dbname=<dbname>
#备份文件目录
bakDir=/home/backup/sql
logFile=/home/backup/backup.log
month=` date +%Y%m `
# 七牛的备份目录,当前按数据库为一级目录,月份为2级目录如:dbname/202004/****.gz.sql
qiniuPath=typecho_joe_theme/$month
# 七牛空间名
qiniuBucket=<bucketName>
datetime=`date +%Y%m%d%H%M%S`
keepDay=7
echo "-------------------------------------------" >> $logFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile
echo "--------------------------" >> $logFile
cd $bakDir
bakFile=$dbname.$datetime.sql.gz
# yum,apt-get,源码编译安装释放

mysqldump -u$user -p$password $dbname | gzip > $bakFile

#docker安装执行方式,需要修改<dbname>为自己的数据库
#docker exec mysql5.6 sh -c 'exec mysqldump <dbname> -uroot -p"$MYSQL_ROOT_PASSWORD"' | gzip > $bakDir/$bakFile

echo "数据库 [$dbname] 备份完成" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "开始上传备份文件至七牛云存储" >> $logFile
#七牛上传命令,分片上传适用大文件,当前使用低频储存,具体命令可以查看文档
qshell rput  $qiniuBucket $qiniuPath/$bakFile $bakDir/$bakFile --storage 1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1
echo "删除${keepDay}天前的备份文件" >> $logFile
find $bakDir -ctime +$keepDay >> $logFile
find $bakDir -ctime +$keepDay -exec rm -rf {} \;
echo " " >> $logFile
echo " " >> $logFile

参考文献:

(二) 添加定时任务

需要使用到cron命令,本文不展开讲这个,需要了解的可以参考以下文献

下面直说具体操作,执行器需要先检查crond的状态service crond status,如果是在运行中就没什么问题

编辑定时任务

#修改当前用户定时任务
crontab -e

添加任务脚本,操作和vi是一样的

# 每天凌晨3点执行脚本,
0 3 * * * /home/backup/backup.sh
# 如果是测试可以用以下的脚本,意思是没2分钟执行一次,看看有没有成本
*/2 * * * * /home/backup/backup.sh

查看定时任务

#查看当前任务情况
crondtab -l
(三) 完成

设置完成以后最好要检查下是否成功,建议先设置按分钟执行备份看看,如果中间有什么问题要多百度,一般都可以搜得到

0

评论 (0)

取消