Docker 定时备份 MySql 并上传至七牛云存储
编辑
129
2023-09-18
1. 安装 qshell
查看系统CPU结构
- Arch命令:直接输出架构方式。aarch64 就是 ARM 架构,x86_64 就是 X86 架构
arch
x86_64
- 在docker中,x86_64是以AMD64架构显示
docker version
OS/Arch: linux/amd64
用xftp把下载的文件,上传到你想要的目录下。
可执行文件移到 /usr/bin/,后面会用到此路径
tar -xvf qshell-v2.12.0-linux-amd64.tar.gz
mv qshell /usr/bin/
chmod +x /usr/bin/qshell
查看是否成功
qshell
显示帮助信息,代表安装成功
2. 配置账户
登录七牛云,右上角密钥管理找到AccessKey/SecretKey
ak、sk:填写密钥管理对应的即可
name:随便写
qshell account <ak> <sk> <name>
查询已配置的用户
qshell user ls
3. 编写shell脚本
创建存放数据和配置目录
mkdir -p ~/backup/sql
mkdir ~/backup/config
编辑备份脚本文件
vi ~/backup/config/backup.sh
添加如下内容
- /usr/bin/qshell:解压出来qshell安装位置
#!/bin/sh
# container_id:命令docker ps查看
# bucket:七牛云存储里的bucket名称
# directory:bucket下的目录
dbname=数据库名称
user=用户名
password=密码
bakDir=~/backup/sql
container_id=看上面解释
bucket=看上面解释
directory=看上面解释
logFile=~/backup/sql/backup.log
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
docker exec -i $container_id mysqldump -u$user -p$password $dbname | gzip > $bakFile
echo "数据库 [$dbname] 备份完成" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "开始上传备份文件至七牛云存储" >> $logFile
/usr/bin/qshell rput $bucket $directory/$bakFile $bakFile --overwrite | 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
rput参数详细用法,可以看qshell官网
添加权限
chmod +x ~/backup/config/backup.sh
测试脚本
sh ~/backup/config/backup.sh
去七牛云存储bucket下,生成后缀.sql.gz,代表测试成功
4. 定时任务
crontab -e
添加任务,每天凌晨2点执行
00 02 * * * /root/backup/config/backup.sh
添加任务后,必须重启 crond
systemctl restart crond
查看任务
crontab -l
删除所有任务(谨慎操作)
crontab -r
- 0
- 0
-
赞助
微信支付宝 -
分享