MySQL定时备份并上传备份文件到七牛云

mysqldump + 七牛云qshell实现备份并上传到OSS

编写备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
#保存备份个数,备份7天数据
backup_clean_day=7
#备份保存路径
backup_dir=/data/mysqlBak/data
#备份日志路径
bakup_log=/data/mysqlBak/log
#日期
dd=`date +%Y%m%d%H%M%S`
#用户名
username=root
#密码
password=123456
#如果文件夹不存在则创建
if [ ! -d $back_dir ];
then
mkdir -p $backup_dir;
fi
#将要备份的数据库
DATABASES=$(mysql -u$username -p$password -e "show databases" | grep -Ev "Database|sys|performance_schema|mysql|brp_log|information_schema")

#循环数据库进行备份
for db in $DATABASES
do
echo
echo ----------$backup_dir/${db}-${dd}.sql.gz BEGIN----------
mysqldump -u $username -p$password --default-character-set=utf8mb4 --single-transaction --source-data=2 --flush-logs --hex-blob --triggers --routines --events --databases ${db} | gzip > ${backup_dir}/${db}-${dd}.sql.gz

#写创建备份日志
echo "create $bakup_log/${db}-${dd}.dupm" >> $bakup_log/log.txt
echo ----------$backup_dir/${db}-${dd}.sql.gz COMPLETE----------
echo
done
echo "done"
#删除7天之前的备份
find ${backup_dir} -type f -mtime +${backup_clean_day} -delete

安装七牛云qshell工具

七牛云qshell工具下载

配置qupload命令配置文件

qupload参数说明文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"src_dir" : "/data/mysqlBak/data",
"bucket" : "sql-bak",
"key_prefix" : "bak_",
"ignore_dir" : false,
"overwrite" : false,
"check_exists" : true,
"check_hash" : false,
"check_size" : true,
"rescan_local" : false,
"skip_file_prefixes" : "test,demo,",
"skip_path_prefixes" : "hello/,temp/",
"skip_fixed_strings" : ".svn,.git",
"skip_suffixes" : ".DS_Store,.exe",
"log_file" : "upload.log",
"log_level" : "info",
"log_rotate" : 10,
"log_stdout" : true,
"file_type" : 2,
"resumable_api_v2" : false,
"resumable_api_v2_part_size" : 4194304
}

运行命令

1
./qshell qupload ./config/upload.conf 

查看上传日志,上传成功后到七牛云后台检查是否上传成功。

编写定时上传脚本

1
2
3
4
5
6
7
8
9
#!/bin/bash
#日期
dd=`date +%Y%m%d%H%M%S`
echo ----------"删除缓存文件夹"----------
rm -rf /root/.qshell/users/username/qupload

echo ----------"开始上传到七牛云-${dd}"----------
/data/qiniu/qshell qupload /data/qiniu/config/upload.conf
echo ----------"上传到七牛云成功!"----------

配置定时执行

1
2
3
4
5
6
7
# 编写定时任务
crontab -e
===========
# 定时每天一点备份数据
0 1 * * * /data/mysqlBak/mysql-bak.sh
# 定时每天两点同步到七牛
0 2 * * * /data/mysqlBak/upload-sql.sh

注意事项

  1. 七牛云的AS/SK建议使用子账号,严格控制权限,只赋予指定bucket的上传权限。
  2. 一定要在上传前删除缓存文件夹,不然下次上传无法读取新的文件。

MySQL定时备份并上传备份文件到七牛云
https://hif.icu/mysql_bak_oss/
作者
HiF
发布于
2023年12月20日
许可协议