#!/bin/bash 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 tablist ## 定义备份数据库表的函数,针对划分的$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个数据库表文件,同时并发做数据库表备份 done wait #tar zcvf mydb.tar.gz *.sql &>/dev/null tar zcf mydb.tar.gz *.sql rm -f *.sql |