下載OSS工具ossutil
wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64
#下載ossutil
chmod 755 ossutil64
#授權(quán)
cp ossutil64 /usr/local/bin/
#復(fù)制命令可以到bin目錄下直接執(zhí)行
ossutil64 config
#創(chuàng)建配置文件
該命令創(chuàng)建將一個(gè)配置文件,在其中存儲(chǔ)配置信息缎浇。
在此之前你需要在OSS創(chuàng)建一個(gè)相關(guān)的bucket扎拣,我的bucket名字叫做cnlive-mysql-bak
請(qǐng)輸入配置文件路徑(默認(rèn)為:/home/user/.ossutilconfig,回車(chē)將使用默認(rèn)路徑素跺。
)
如需設(shè)置為其它路徑二蓝,在使用命令時(shí)需要將--config-file選項(xiàng)設(shè)置為該路徑.
對(duì)于下述配置,回車(chē)將跳過(guò)相關(guān)配置項(xiàng)的設(shè)置亡笑,配置項(xiàng)的具體含義侣夷,請(qǐng)使用"help config"命令查看。
請(qǐng)輸入endpoint:http://oss-cn-shenzhen.aliyuncs.comendpoint請(qǐng)參考oss訪(fǎng)問(wèn)域名
請(qǐng)輸入accessKeyID:yourAccessKeyID
請(qǐng)輸入accessKeySecret:yourAccessKeySecret
請(qǐng)輸入stsToken:accessKey等問(wèn)題請(qǐng)參考阿里云AK創(chuàng)建
ossuti的所有使用問(wèn)題仑乌,請(qǐng)參考 ossutil阿里云官方文檔修改命令
編寫(xiě)腳本
Mysql 5.5版本
#!/bin/sh
#備份數(shù)據(jù)庫(kù)到OSS
cd /data/mysqlbak #前往備份目錄
echo "您處于數(shù)據(jù)庫(kù)備份目錄"
Now=$(date +"%d-%m-%Y") #獲取當(dāng)前日期
DB=databases #數(shù)據(jù)庫(kù)名稱(chēng)
File=$DB-$Now.sql #字符串組合生成文件名
mysqldump -uroot -p123456 $DB > $File #備份主命令百拓,此處的db是你要備份的數(shù)據(jù)庫(kù)
echo "數(shù)據(jù)庫(kù)備份完成"
SevenDays=$(date -d -7day +"%d-%m-%Y") #生成7天前的文件名,用于刪除晰甚,可自行改為所需時(shí)長(zhǎng)
if [ -f /data/mysqlbak/$DB-$SevenDays.sql ] #判斷7天前的備份是否存在
then
rm -rf /data/mysqlbak/$DB-$SevenDays.sql #存在即刪除
echo "您已刪除7天前的備份文件"
else
echo "7天前的文件不存在 "
fi
ossutil64 cp /data/mysqlbak/*.sql oss://cnlive-mysql-bak/$DB/
#填寫(xiě)你的oss信息使用ossutil64命令將其cp到OSS上
echo "您數(shù)據(jù)庫(kù)備份已上傳至阿里云OSS"
MySQL 5.6以上版本
設(shè)置免密登錄
因?yàn)镸ySQL5.6以上版本如果使用密碼需要在執(zhí)行命令后的提示輸入里輸入密碼,或者在指定的安全文件內(nèi)指定密碼衙传,不能在-p后面直接追加密碼
所以這里我們會(huì)使用到mysql_config_editor這個(gè)工具
mysql_config_editor是MySQL5.6.6以后版本的工具。這個(gè)工具可以認(rèn)證信息加密存儲(chǔ)在.mylogin.cnf中厕九,通常這個(gè)文件在Linux用戶(hù)的家目錄蓖捶,當(dāng)然password信息是加密的,無(wú)需擔(dān)心泄露問(wèn)題
mysql_config_editor set --login-path=[認(rèn)證信息名] user=[用戶(hù)名] --password
#認(rèn)證信息名是該條認(rèn)證信息的名稱(chēng)扁远,后續(xù)登錄時(shí)直接使用認(rèn)證信息名即可登錄俊鱼,無(wú)需再次輸入密碼。
#這里需要注意的是密碼里面不能含有特殊字符畅买,建議創(chuàng)建一個(gè)新的用戶(hù)來(lái)進(jìn)行備份操作
mysql --login-path=[認(rèn)證信息名]
#直接使用認(rèn)證信息名來(lái)登錄
修改mysqldump命令的相關(guān)參數(shù)
免密登錄成功并闲,接下來(lái)就是修改腳本中mysqldump命令的相關(guān)參數(shù)改為免密登錄模式
#!/bin/sh
#備份數(shù)據(jù)庫(kù)到OSS
cd /data/mysqlbak #前往備份目錄
echo "您處于數(shù)據(jù)庫(kù)備份目錄"
Now=$(date +"%d-%m-%Y") #獲取當(dāng)前日期
DB=databases #數(shù)據(jù)庫(kù)名稱(chēng)
File=$DB-$Now.sql #字符串組合生成文件名
mysqldump --login-path=[認(rèn)證信息名] $DB > $File #備份主命令,此處的db是你要備份的數(shù)據(jù)庫(kù),使用--login-path參數(shù)免密登錄
echo "數(shù)據(jù)庫(kù)備份完成"
SevenDays=$(date -d -7day +"%d-%m-%Y") #生成7天前的文件名谷羞,用于刪除帝火,可自行改為所需時(shí)長(zhǎng)
if [ -f /data/mysqlbak/$DB-$SevenDays.sql ] #判斷7天前的備份是否存在
then
rm -rf /data/mysqlbak/$DB-$SevenDays.sql #存在即刪除
echo "您已刪除7天前的備份文件"
else
echo "7天前的文件不存在 "
fi
ossutil64 cp /data/mysqlbak/*.sql oss://cnlive-mysql-bak/$DB/
#填寫(xiě)你的oss信息使用ossutil64命令將其cp到OSS上
echo "您數(shù)據(jù)庫(kù)備份已上傳至阿里云OSS"
寫(xiě)入定時(shí)任務(wù)
mkdir /data/mysqlbak
#創(chuàng)建腳本中需要用到的文件夾
crontab -e
0 1 * * * /bin/bash /root/mysqlbackup.sh
有錯(cuò)請(qǐng)指出,不喜勿噴,不接受?chē)娢倚“紫睿m然這是事實(shí)蠢壹,如果要噴請(qǐng)預(yù)約