#!/bin/bashbash N=5 ## 定義併發量爲5 mysql="mysqldump -uaming -ppasswd mydb"併發 $mysql -e "show tables;"|sed '1d' > /tmp/table.list n=`wc -l /tmp/table.list|awk '{print $1}'` ## 數據庫表的數量函數 div() { n=`echo "scale=1;$1/$2"|bc` ## 兩個數相除 n1=`echo "scale=1;$n+0.5"|bc` ## 兩個數相除的商 加 0.5 echo $n1|cut -d. -f1 }加密 n1=`div $n $N` $N個文件,每一個文件的平均行數,非每一個文件的真實行數 split -l $n1 /tmp/tab.list -d -a 2 tablistblog ## 定義備份數據庫表的函數,針對劃分的$N個tablist0?文件中的數據庫表作備份, ## 每一個tablist0?文件中大約有$n1個數據庫表 mydump() { for t in `cat $1` do mysqldump -uaming -ppasswd mydb $t > $t.sql done }進程 for f in tablist01 tablist02 tablist03 tablist04 tablist05 do mydump $f & ## 針對$N個數據庫表文件,同時併發作數據庫表備份 donemd5 wait #tar zcvf mydb.tar.gz *.sql &>/dev/null tar zcf mydb.tar.gz *.sql rm -f *.sql |