通过 shell 备份 mysql 到七牛云并发送钉钉消息
发布: 2020-06-25 21:05:45标签: 前端开发
一、简介
所有功能通过 shell
实现
- 定时备份数据库
- 使用
shell
上传七牛云 - 上传结果发送钉钉消息
设置定时任务
(1) 打开定时任务
01crontab -e
复制代码(2)编辑定时任务
01# 每天五点开始备份数据库020 5 * * * cd /root/backup; bash index.sh03
复制代码二、shell 文件介绍
(1)index.sh
关联三个 shell
,mysql
->上传七牛云->上传结果发送钉钉消息,保存日志到 backup.log
01set -e0203# 日志文件04logFile="backup.log"0506# 上传文件07echo "开始数据库备份开始..."08bash backup.sh|xargs bash upload.sh|xargs bash dingding.sh >> $logFile09echo "\n" >> $logFile
复制代码(2)backup.sh
备份数据库 shell
01#!bin/bash02# 数据库用户名和密码03username=****04password=****0506# mysql的docker容器ID/名称07dockerId=****0809# 备份文件10backupFile="`pwd`/mysql_backup/`date +%Y-%m-%dT%H:%M:%S`.sql.gz"1112# 创建保存目录13mkdir -p mysql_backup1415# 执行备份任务16docker exec $dockerId /usr/bin/mysqldump --all-databases -u"$username" -p"$password" | gzip > $backupFile1718echo $backupFile
复制代码(3)upload.sh
用 shell 通过 accesskey/secretkey 获取七牛上传凭证 并上传七牛云
01# 第一个参数为上传文件名字02file=$103if [ -z $file ]; then04 echo "请指定上传文件!"05 exit06fi0708# 上传配置09url=http://upload.qiniup.com #存储区域见 https://developer.qiniu.com/kodo/manual/1671/region-endpoint10bucket=***11accesskey=****12secretkey=***1314# 设置过期时间1小时15deadline=$(echo `date +%s` + 3600| bc )1617# 构造JSON格式的上传策略18putPolicy="{\"scope\":\"$bucket\",\"deadline\":$deadline}"1920# 对上传策略进行Base64编码21encodedPutPolicy=`echo -n "$putPolicy" | base64 | tr "+/" "-_"`2223# 使用访问密钥secretkey对Base64上传策略进行HMAC-SHA1签名,并对签名进行Base64编码24encodedSign=`echo -n "$encodedPutPolicy" | openssl sha1 -hmac $secretkey -binary | base64 | tr "+/" "-_"`2526# 拼接token27uploadToken="$accesskey:$encodedSign:$encodedPutPolicy"2829# 使用curl上传30curl -s -F "file=@$file" -F "key=$file" -F "token=$uploadToken" $url3132# 代码来自github:https://github.com/helphi/qiniu33# 参考34# https://developer.qiniu.com/kodo/manual/1272/form-upload
复制代码(4)dingding.sh
利用 shell 发送钉钉消息
01#!bin/bash0203# 发送钉钉消息(安全设置使用关键词)04res=$10506apiUrl="****"07formatDate=`date "+%Y-%m-%d %H:%M:%S"`0809title="mysql备份成功"10text="### $title\n$res\n\n$formatDate"1112msg="{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"$title\",\"text\":\"$text\"}}"1314curl $apiUrl -H "Content-Type:application/json" -d "$msg"15
复制代码