分享一個MySQL分庫分表備份指令碼(原)

來源:互聯網
上載者:User

標籤:執行   時間   思路   錯誤   etc   指令碼   rom   mkdir   grep   

分享一個MySQL分庫備份指令碼(原)


開發思路:

1.路徑:規定備份到什麼位置,把路徑(先判斷是否存在,不存在建立一個目錄)先定義好,我的路徑:/mysql/backup,每個備份用壓縮提升效率,帶上時間方便整理

2.取資料庫:抓取資料庫名稱,我用的awk和grep配合取資料庫的名稱(如果想按照表備份可以再細化一下)注意要用mysql -e選項 這樣才能做成指令碼

3.系統內容變數:因為用到了函數,所以非系統內建的命令 最好在指令碼裡面用 . /etc/profile  把系統當前的環境變數傳過來

4.實現方法:用mysqldump 命令+for 迴圈實現分庫備份 

5.備份檢查:如果備份出來的檔案存在大小不為0 則認定為成功,返回success ,否則failed,如果放在定時任務執行 建議輸出到記錄檔裡面,方便日後查看

6.注意定義變數的時候 單引號‘’和雙引號“”的區別,否則會有錯誤

 1 #!/bin/bash 2 #define var 3 user="root" 4 pass="1314520" 5 path="/mysql/backup" 6 cmd="mysql -u${user} -p${pass}" 7 dump="mysqldump -u${user} -p${pass} -B --events -x --master-data=2" 8 #system function 9 . /etc/init.d/functions10 . /etc/profile11 #judge dir12 function jdir(){13 if [ ! -e $path ];then14   mkdir $path -p15 fi16 }17 #dump database18 function bk(){19 for dbname in `$cmd -e ‘show databases;‘|awk ‘NR>1{print $0}‘|grep -v "performance_schema"`20 do21   $dump $dbname|gzip >${path}/${dbname}_$(date +%F).sql.gz22   sleep 123   if [ -s ${path}/${dbname}_$(date +%F).sql.gz ];then24      action "dump $dbname success!" /bin/true25   else26      action "dump $dbname failed" /bin/false27   fi28 done
29 }30 function main(){31 jdir32 bk33 }34 main

想和大家重點分享的是開發的思路,技術很基礎。

經過測試可以完成,如果有錯誤,歡迎指正。

ps 附上分表備份的指令碼供參考

 1 #!/bin/bash 2 #define var 3 user="root" 4 pass="1314520" 5 path="/mysql/backup" 6 cmd="mysql -u${user} -p${pass}" 7 dump="mysqldump -u${user} -p${pass} --events -x --master-data=2" 8 #system function 9 . /etc/init.d/functions10 . /etc/profile11 #judge dir12 function jdir(){13 if [ ! -e $path ];then14   mkdir $path -p15 fi16 }17 #dump database18 function bk(){19 for dbname in `$cmd -e ‘show databases;‘|awk ‘NR>1{print $0}‘|grep -v "performance_schema"`20 do21   for tname in `$cmd -e "show tables from ${dbname}"|sed "1d"`22   do23   $dump $dbname $tname|gzip >${path}/${dbname}_${tname}_$(date +%F).sql.gz24    25   if [ -e ${path}/${dbname}_${tname}_$(date +%F).sql.gz ];then26      echo "${dbname}_${tname}" >>$path/mysql_table.log27   28   fi29   done30 done31 }32 function main(){33 jdir34 bk35 }36 main

分享一個MySQL分庫分表備份指令碼(原)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.