例63
需求:用shell实现,以并发进程的形式将mysql数据库所有的表备份到当前目录,并把所有的表压缩到一个压缩包文件里。
假设数据库名字为mydb,用户名为aming,密码为passwd。
#!/bin/bash
#这个脚本用来并发备份数据库
#作者:xzm
#日期:2019-12-13
N=5
mysql -uaming -ppasswd mydb -e “show tables”|sed ‘1d’ > /tmp/table.txt
n=wc -l /tmp/table.txt|awk '{print $1}' div() { n=
echo “scale=1;$1/
2
"
∣
b
c
‘
n
1
=
‘
e
c
h
o
"
s
c
a
l
e
=
1
;
2"|bc` n1=`echo "scale=1;
2"∣bc‘n1=‘echo"scale=1;n+0.5”|bcecho $n1|cut -d. -f1 } n1=
div $n $Nsplit -l $n1 /tmp/table.txt myd() { for t in
cat $1`
do
mysqldump -uaming -ppasswd mydb $t > $t.sql
done
}
for f in xaa xab xac xad xae
do
myd $f &
done
wait
tar czf mydb.tar.gz *.sql
rm -f *.sql