记录下使用千牛云定时备份mysql

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 配置

  1. 配置前需要先在千牛云-对象存储创建空间并设置为私有
  2. 个人中心>密钥管理中创建密钥,即 AK 和 SK
  3. 在服务器上配置
# 设置 ak sk 和name
 qshell account ak sk name
# 如果ak, sk, name首字母是"-" 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项
# qshell account -- ak sk name
# 检查一下
 qshell user ls
# 输出
Name: XXXX
AccessKey: xxx
SecretKey: xxx

脚本

脚本内容

#!/bin/sh
# mysql data backup script
#
# use mysqldump --help,get more detail.

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
# mysqldump -u$user -p$password $dbname | gzip > $bakFile
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基础上修改的。

  1. 我用的是docker-mysql,所以导出命令改成docker环境的
  2. 给千牛云上的备份文件也设置了个有效期,过期后删除,以免空间不足
  3. qshell rput 覆盖上传的参数应该是 --overwrite,而不是Yes

定时任务

每天2点进行备份

0 2 * * * /data/backup/qbackup.sh

参考

  1. 定时备份 MySQL 并上传到七牛
  2. qshell rput
  3. qshell expire

原文地址

原文地址:记录下使用千牛云定时备份mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值