首页 专题 文章 代码 归档

纯Shell脚本备份数据库到阿里云OSS

1. 备份

原文地址:https://blog.csdn.net/weixin_34080903/article/details/89548219

仅测试,完全可用!

代码:


#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

Date=`date +%Y-%m-%d_%H:%M:%S`
BucketTime=`date +%Y%m`
OldDate=$(date -d "-7 days" "+%Y-%m-%d")

Host="oss-cn-hangzhou-internal.aliyuncs.com"
###oss的地址###
Bucket="bucketname"
###bucket名字###
Id="xxxxxxxx"
###Access ID###
Key="xxxxxxxxxx"
###Access Key###
OssHost=$Bucket.$Host

MYUSER="xxxxx"
MYPASS="xxxxxx"
###备份数据库账号信息###
DBS=`mysql -u$MYUSER -p$MYPASS -P3306 -Bse "show databases" | grep -v "information_schema" | grep -v "test"`
###罗列数据库信息###
#========================BackUp SQL========================

for DateName in $DBS; do
    mysqldump --single-transaction -u$MYUSER -p$MYPASS -P3306 $DateName > /tmp/$DateName.$Date.sql
    zip -P 密码 /tmp/$DateName.$Date.sql.zip /tmp/$DateName.$Date.sql
###zip压缩设置的密码###
    if [ -s /tmp/$DateName.$Date.sql.zip ] ; then

        source="/tmp/$DateName.$Date.sql.zip"
        dest="$BucketTime/$DateName.$Date.sql.zip"

        resource="/${Bucket}/${dest}"
        contentType=`file -ib ${source} |awk -F ";" '{print $1}'`
        dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"
        stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
        signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`

        url=http://${OssHost}/${dest}
        echo "upload ${source} to ${url}"

        curl -i -q -X PUT -T "${source}" \
            -H "Host: ${OssHost}" \
            -H "Date: ${dateValue}" \
            -H "Content-Type: ${contentType}" \
            -H "Authorization: OSS ${Id}:${signature}" \
            ${url}

        if [ $? -ne 0 ];then
            echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Upload"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Upload'" daobidao@daobidao.com  
        else
            echo -e ""[$HOSTNAME] DateName $DateName $Date Success"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Success'" daobidao@daobidao.com
            rm -rf /tmp/$DateName.$OldDate*
        fi

    else
        echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Backup "" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Backup'" daobidao@daobidao.com
    fi
done

#========================BackUp SQL========================

2. 代码使用

1、首先需要在阿里云注册账号,开通OSS服务,创建bucket,Bucket设置为私有读写。

2、将上面的脚本文件复制下来,保存为 .sh 脚本文件,其中需要把oss地址bucket名字Access IDAccess Key网站目录,以及通知邮件的地址修改成自己的。

3、使用命令: chmod +x backup.sh 对文件设置执行权限。

4、添加cron:echo "0 0 * * * your file path" >>/var/spool/cron/root

3. 温馨提示

1、代码中需要填写数据库账号、密码,请勿使用root账户。

2、代码还需要填写压缩密码,可修改为无。

4. Cron使用

cron在线生成网站:https://qqe2.com/cron

如果你的用户还没有创建cron目录,需要先创建:

进入编写:

crontab -e

截图-1582030675

比如:凌晨3点执行:

0 0 3 * * ? your command

查看:

crontab -l

重启:

service crond restart
此文阅读完毕,您可以:分享
二维码图片 扫描关注我们哟