MySQL數(shù)據(jù)庫(kù)自動(dòng)備份Shell腳本

今天這個(gè)備份分二個(gè)版本一個(gè)是linux上直接安裝的mysql,另一種是docker上安裝的mysql?;静僮鞫家粯又皇莻浞輘ql語(yǔ)句不同而已。可以選擇設(shè)置需要備份的庫(kù),自動(dòng)備份壓縮,自動(dòng)刪除 7 天前的備份,需要使用 crontab 定時(shí)執(zhí)行。
創(chuàng)建一個(gè)mysql.sh文件

  • 要備份的數(shù)據(jù)庫(kù)名,多個(gè)數(shù)據(jù)庫(kù)用空格隔開(kāi)
 #!/bin/bash
 databases=(db1 db2 db3)
  • 備份文件要保存的目錄
 basepath='/usr/local/mysql/'
 
 if [ ! -d "$basepath" ]; then
 
 mkdir -p "$basepath"
 
 fi
  • 循環(huán)databases數(shù)組
for db in ${databases[*]}

do
  • 每個(gè)數(shù)據(jù)庫(kù)文件夾
if [ ! -d "$basepath$db" ]; then

mkdir -p "$basepath$db"

fi
  • 備份數(shù)據(jù)庫(kù)生成SQL(Linux)文件
/bin/nice -n 19 /usr/bin/mysqldump -uUSER -pPASSWORD $db > $basepath$db/$db-$(date +%Y%m%d).sql
  • 備份數(shù)據(jù)庫(kù)生成SQL(Docker)文件
docker exec mysql mysqldump -uUSER -pPASSWORD $db > $basepath$db/$db-$(date +%Y%m%d).sql
  • 將生成的sql文件壓縮
/bin/nice -n 19 tar zPcf $basepath$db/$db-$(date +%Y%m%d).tar.gz $basepath$db/$db-$(date +%Y%m%d).sql
  • 刪除7天之前的備份數(shù)據(jù)
find $basepath/* -mtime +7 -name ".tar.gz" -exec rm -rf {} \;
 
 done
  • 刪除生成的SQL文件
rm -rf $basepath/*/*.sql
  • 使用crontab設(shè)置定時(shí)執(zhí)行
crontab -e
  • 設(shè)置為凌晨2點(diǎn)執(zhí)行
0 2 * * * /usr/local/mysql/mysql.sh
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容