如何利用shell脚本备份mysql数据库并上传阿里云oss上?
网友回复
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/ossutil642、配置oss的key
ossutil64 config -e oss-cn-qingdao.aliyuncs.com -i AccessKeyID -k AccessKeySecret3、在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.log4、设置可执行
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