+
80
-

如何利用shell脚本备份mysql数据库并上传阿里云oss上?

如何利用shell脚本备份mysql数据库并上传阿里云oss上?


网友回复

+
0
-

1、首先下载阿里云oss的命令行工具ossutil64

wget http://gosspublic.alicdn.com/ossutil/1.6.19/ossutil64
mkdir /opt/tools/
cp ossutil64 /opt/tools/
chmod 755 /opt/tools/ossutil64
chmod +x /opt/tools/ossutil64
sudo ln -s /opt/tools/ossutil64 /usr/local/bin/ossutil64

2、配置oss的key

ossutil64  config -e oss-cn-qingdao.aliyuncs.com  -i AccessKeyID -k AccessKeySecret

3、在data下新建backupmysql.sh

#!/bin/bash
source /etc/profile
#备份保存路径
backup_dir=/data/backup/sql
#日期
dd=`date +%Y%m%d`
#备份工具
tool=mysqldump
# 主机
host=127.0.0.1
#用户名
username=root
#密码
password=密码
#需要备份的数据库
database_name=dbname

#判断文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi
#将备份文件压缩  
$tool -h$host -u$username -p$password $database_name | gzip > $backup_dir/$database_name-$dd.sql.gz

echo "文件备份 $backup_dir/$database_name_$dd.sql.gz 成功!!!"
#将备份日志写入log文件
echo "创建 $backup_dir/$database_name-$dd.sql.gz " >> $backup_dir/$database_name.log

#7天前的日期
dd7=`date -d -7days +%Y%m%d`
#删除据库备份路径中的七天前sql.gz格式压缩文件。注:确认该路径下全是.sql.gz文件。
find $backup_dir -name $database_name-$dd7".sql.gz" -exec rm -rf {} \;

url=oss://ossname/sqlbackup

# 将/data/backup/sql目录下的sql.gz文件上传到oss的Bucket为 broad-tms的sql/test文件夹下
/opt/tools/ossutil64 cp $backup_dir/$database_name-$dd.sql.gz $url/$database_name/$database_name-$dd.sql.gz

#删除七天前的文件
/opt/tools/ossutil64  rm  $url/$database_name/$database_name-$dd7".sql.gz" 
echo "上传oss $backup_dir/$database_name-$dd.sql.gz " >> $backup_dir/$database_name.log

4、设置可执行

chmod +x backupmysql.sh

5、修改shell脚本属性,赋予执行权限

chmod 600 /data/backupmysql.sh chmod +x /data/backupmysql.sh

6、定时执行脚本

vi /etc/crontab

添加

15 3 * * *   /data/backupmysql.sh  >> /opt/tools/shell/mysql_backup_test.log 2>&1

表示每天凌晨3点15分执行备份任务

/opt/tools/shell/mysql_backup_test.log可查看脚本执行日志

重启crontab

/etc/init.d/crond restart 7、MySQL恢复 mysql -u username -p databse < backup.sql

我知道答案,我要回答