目录
qshell 下载
tar zxfv <(curl -L https://devtools.qiniu.com/qshell-v2.6.2-linux-386.tar.gz)
chmod +x qshell
sudo ln $PWD/qshell /usr/local/bin/qshell
其他版本可以看以下链接
七牛命令行工具
qshell 配置
- 配置前需要先在七牛云-对象存储创建空间并设置为私有
- 在个人中心>密钥管理中创建密钥,即 AK 和 SK
- 在服务器上配置
qshell account ak sk name
qshell user ls
Name: XXXX
AccessKey: xxx
SecretKey: xxx
脚本
脚本内容
#!/bin/sh
dbname=dbname
user=user
password=password
bakDir=/data/backup/
logFile=/data/backup/mysqlbak.log
datetime=`date +%Y%m%d%H%M%S`
keepDay=keepDay
Bucket=Bucket
echo "-------------------------------------------" >> $logFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile
echo "--------------------------" >> $logFile
cd $bakDir
bakFile=$dbname.$datetime.sql.gz
docker exec mysql /usr/bin/mysqldump -u $user $dbname | gzip > $bakFile
echo "数据库 [$dbname] 备份完成" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "开始上传备份文件至七牛云存储" >> $logFile
qshell rput $Bucket database/$bakFile $bakFile --overwrite | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1
qshell expire $Bucket database/$bakFile $keepDay
echo "删除${keepDay}天前的备份文件" >> $logFile
find $bakDir -ctime +$keepDay >> $logFile
find $bakDir -ctime +$keepDay -exec rm -rf {} \;
echo " " >> $logFile
echo " " >> $logFile
配置
其中需要填写的是:
参数 |
说明 |
dbname |
数据库名 |
user |
数据库账号 |
password |
数据库密码 |
keepDay |
有限期,天数 |
Bucket |
七牛空间名称 |
bakDir |
备份目录 |
logFile |
备份日志 |
修改内容
脚本在参考1基础上修改的。
- 我用的是docker-mysql,所以导出命令改成docker环境的
- 给七牛云上的备份文件也设置了个有效期,过期后删除,以免空间不足
- qshell rput 覆盖上传的参数应该是 --overwrite,而不是Yes
定时任务
每天2点进行备份
0 2 * * * /data/backup/qbackup.sh
参考
- 定时备份 MySQL 并上传到七牛
- qshell rput
- qshell expire