安装ossutil
wget https://gosspublic.alicdn.com/ossutil/1.7.15/ossutil64
chmod +x ossutil64 # 授权
cp /root/ossutil64 /usr/local/bin
然后复制到/usr/local/bin。
编写shell脚本
#!/bin/sh
#mysql根目录
mysql_base_path=/usr/local/mysql/
# 备份文件临时目录
mysql_dump_path=/usr/backup/sql
#mysql-config
mysql_user=XXX
mysql_pass=XXX
# oss配置
oss_endpoint=XXXX
oss_bucket=XXX
oss_accesskeyid=XXXXXX
oss_accesskeysecret=XXXXXXX
backup_name=`date +%Y%m%d%H%M%S`
#判断文件夹不存在则创建
if [ ! -d ${mysql_dump_path} ];
then
mkdir -p ${mysql_dump_path};
fi
cd ${mysql_dump_path}
# 使用 mysqldump 备份整个数据库到临时文件夹中
${mysql_base_path}bin/mysqldump -u${mysql_user} -p${mysql_pass} --all-databases > ${backup_name}.sql
# --ignore-table忽略掉表,需要带上database.【下面这个命令是docker执行,暂时用不到】
#docker exec root-mysql-1 sh -c 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --all-databases' > ${backup_name}.sql
# 打包/pack
tar zcf ${backup_name}.tar.gz ${backup_name}.sql
rm -f ${backup_name}.sql
# 备份到OSS
ossutil64 cp ${backup_name}.tar.gz oss://${oss_bucket}/mysql/backup/${backup_name}.tar.gz -f -e ${oss_endpoint} -i ${oss_accesskeyid} -k ${oss_accesskeysecret}
rm -f ${backup_name}.tar.gz
echo "备份完成"
给SH文件配置权限
chmod +x /usr/dbbackup/XXX.sh
配置定时任务
//设置定时任务
crontab -e
//设置执行时间 和 执行文件的命令
0 */1 * * * /usr/dbbackup/XXXX.sh >> /usr/dbbackup/db.log & # 一小时执行一次
//检查定时任务
crontab -l
//重新加载cron配置
service crond restart
彩蛋:
shell脚本在本地电脑编辑的,格式是dos(可以用vi编辑该shell脚本,进入命令行模式,输入:set ff 回车即可看到左下角显示fileformat=dos),在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以本地修改的sh文件在CentOS上运行每行都会多了一个CR,因此就会报错syntax error: unexpected end of file。
1. 我们可以查看该脚本文件的格式,方法是使用命令:vim nginx_check.sh进入编辑文件界面
2. 直接输入":",然后在":"之后输入"set ff"如下图所示
3. 我们需要把格式改为unix,方法是输入":set ff=unix",也可以输入":set fileformat=unix"如下图所示。
再次执行