#!/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 |