mysql定時備份單個或多個數(shù)據(jù)庫

參考1:MySQL定時備份數(shù)據(jù)庫(全庫備份)
?? ?? 參考網(wǎng)站中的備份多個數(shù)據(jù)庫的話,需要啟動使用多個shell腳本文件,我嫌麻煩就修改了下,一個腳本中可以備份多個數(shù)據(jù)庫。

#!/bin/bash
#保存?zhèn)浞輦€數(shù),備份31天數(shù)據(jù)
number=31
#備份保存路徑
backup_dir=/data/backupfile/mysqlBackup
#日期
dd=`date +%Y%m%d`
minute=`date +%H%M`
#備份工具
tool=mysqldump
#用戶名
username=root
#密碼
password=root
#將要備份的數(shù)據(jù)庫
database_names1="testdatabase1,testdatabase2"
database_names2="testdatabase3,testdatabase4"
function backupMysql(){
    OLD_IFS="$IFS"
    IFS=","
   #代表第一個參數(shù)
    arr=($1)
    IFS="$OLD_IFS"
    for database_name in ${arr[@]} 
    do
             echo $database_name 'start backup....'
           #如果文件夾不存在則創(chuàng)建
            if [ ! -d $backup_dir/$database_name/$dd ]; 
            then     
                mkdir -p $backup_dir/$database_name/$dd/;
            fi
            #簡單寫法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
            $tool -u $username -p$password $database_name > $backup_dir/$database_name/$dd/$database_name-$dd-$minute.sql
            #寫創(chuàng)建備份日志
            echo "`date +%Y-%m-%d` `date +%H`:`date +%M` create $backup_dir/$database_name/$database_name-$dd.dupm" >> $backup_dir/$database_name/log.txt
            #找出需要刪除的備份
           delfile=`ls -l   $backup_dir/$database_name/ | grep ^d | awk '{print $9 }' | head -1`
           #判斷現(xiàn)在的備份數(shù)量是否大于$number
           count=`ls -l  $backup_dir/$database_name/ | grep ^d | awk '{print $9 }' | wc -l`
            if [ $count -gt $number ]
           then
            #刪除最早生成的備份,只保留number數(shù)量的備份
           rm -rf  $backup_dir/$database_name/$delfile
            #寫刪除文件日志
            echo "`date +%Y-%m-%d` `date +%H`:`date +%M`  delete $backup_dir/$database_name/$delfile" >> $backup_dir/$database_name/log.txt
           fi
         echo $database_name 'end backup....'  
    done
   
}
backupMysql $database_names1;
backupMysql $database_names2;

如上代碼主要含義如下:

1.首先設(shè)置各項參數(shù),例如number最多需要備份的數(shù)目,備份路徑,用戶名,密碼等。

2.執(zhí)行mysqldump命令保存?zhèn)浞菸募⒉僮鞔蛴≈镣夸浵碌膌og.txt中標記操作日志。

3.定義需要刪除的文件:通過ls命令篩選出文件夾并獲取第九列,即文件名列,再通過 head -1 實現(xiàn)定義操作時間最晚的那個需要刪除的文件。

4.定義備份數(shù)量:通過ls命令篩選出文件夾同時加上 wc -l 統(tǒng)計文件夾中備份了多少天

5.如果文件超出定義的時間,就刪除最早創(chuàng)建的sql文件

  • 1.shell中要調(diào)用function函數(shù),必須使在函數(shù)的后面,在前面則調(diào)用無效。
  • 2.在windows中如果不是保存成unix腳本格式,linux中則須進行DOS轉(zhuǎn)UNIX
  • 3.使用vim進行格式轉(zhuǎn)換
DOS轉(zhuǎn)UNIX 
:setfileformat=unix    或   :set ff=unix 
UNIX轉(zhuǎn)DOS
:setfileformat=dos    或    :set ff=dos                               
保存     
:wq
  • 4.文件必須具有可執(zhí)行權(quán)限
    chmod +x mysqlBackup.sh
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評論 0 5
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,328評論 2 89
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,837評論 9 468
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,359評論 2 33
  • 如標題,寫給28歲。 文中所使用的第二人稱“你”,均代表我,不泛指其他人。我無心教育任何人,亦無心做作,我知道我的...
    玉柱鑒書閱讀 520評論 2 3

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