溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣在生產(chǎn)環(huán)境下實現(xiàn)每天自動備份mysql數(shù)據(jù)庫

發(fā)布時間:2021-09-28 14:10:56 來源:億速云 閱讀:105 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這篇文章給大家介紹怎樣在生產(chǎn)環(huán)境下實現(xiàn)每天自動備份mysql數(shù)據(jù)庫,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、描述

    我相信很多朋友在工作都都會有這種需求,老板或領(lǐng)導(dǎo)讓你每天都要備份mysql數(shù)據(jù)庫,你該如何實現(xiàn)呢,是每天到一定的時間在服務(wù)器上敲一遍mysql的備份命令,還是想寫個腳本,定時定點的自動備份呢?我相信大家都想讓它自動備份,接下來我通"shell腳本+定時任務(wù)"的方式來實現(xiàn)自動備份mysql數(shù)據(jù)庫。

2、環(huán)境

備份路徑:/data/mysqlbak/

備份腳本:/data/mysqlbak/mysqlbak.sh

備份時間:每天23:59備份

備份要求:比如備份的數(shù)據(jù)只保留1周

3、mysqlbak.sh腳本

#!/bin/bash
#數(shù)據(jù)庫IP
dbserver='127.0.0.1'
#數(shù)據(jù)庫用戶名
dbuser='root'
#數(shù)據(jù)密碼
dbpasswd='********'
#數(shù)據(jù)庫,如有多個庫用空格分開
dbname='back01'
#備份時間
backtime=`date +%Y%m%d`
#備份輸出日志路徑
logpath='/data/mysqlbak/'


echo "################## ${backtime} #############################" 
echo "開始備份" 
#日志記錄頭部
echo "" >> ${logpath}/mysqlback.log
echo "-------------------------------------------------" >> ${logpath}/mysqlback.log
echo "備份時間為${backtime},備份數(shù)據(jù)庫表 ${dbname} 開始" >> ${logpath}/mysqlback.log
#正式備份數(shù)據(jù)庫
for table in $dbname; do
source=`mysqldump -h ${dbserver} -u ${dbuser} -p${dbpasswd} ${table} > ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqlback.log;
#備份成功以下操作
if [ "$?" == 0 ];then
cd $datapath
#為節(jié)約硬盤空間,將數(shù)據(jù)庫壓縮
tar zcf ${table}${backtime}.tar.gz ${backtime}.sql > /dev/null
#刪除原始文件,只留壓縮后文件
rm -f ${datapath}/${backtime}.sql
#刪除七天前備份,也就是只保存7天內(nèi)的備份
find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "數(shù)據(jù)庫表 ${dbname} 備份成功!!" >> ${logpath}/mysqlback.log
else
#備份失敗則進行以下操作
echo "數(shù)據(jù)庫表 ${dbname} 備份失敗!!" >> ${logpath}/mysqlback.log
fi
done
echo "完成備份"
echo "################## ${backtime} #############################"

腳本寫好了,你要記得為腳本加上執(zhí)行權(quán)限:

#chmod +x /data/mysqlbak/mysqlbak.sh

4、配置定時任務(wù)執(zhí)行腳本

#crontab -e

59 23 * * * /data/mysqlbak/mysqlbak.sh

參數(shù)說明:

    格式為              :分    時    日    月    周    命令

    59 23 * * *    :每天23:59分自動執(zhí)行腳本   

    M: 分鐘(0-59)。每分鐘用*或者 */1表示

    H:小時(0-23)。(0表示0點)

    D:天(1-31)。

    m: 月(1-12)。

    d: 一星期內(nèi)的天(0~6,0為星期天)。

    提示:最好你先執(zhí)行一下腳本能不能跑通,然后在寫到crontab中,等執(zhí)行完了,進入/data/mysqlbak/目錄查看一下有沒有備份文件,如果有,則表示腳本執(zhí)行成功,記得不要搞錯了備份的用戶和密碼。

關(guān)于怎樣在生產(chǎn)環(huán)境下實現(xiàn)每天自動備份mysql數(shù)據(jù)庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI