Skip to content

Latest commit

 

History

History
46 lines (35 loc) · 842 Bytes

63.md

File metadata and controls

46 lines (35 loc) · 842 Bytes

题目要求

用shell实现,以并发进程的形式将mysql数据库所有的表备份到当前目录,并把所有的表压缩到一个压缩包文件里。

假设数据库名字为mydb,用户名为aming,密码为passwd。

参考答案

#!/bin/bash
#这个脚本用来并发备份数据库
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-07

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"|bc`
    n1=`echo "scale=1;$n+0.5"|bc`
    echo $n1|cut -d. -f1
}

n1=`div $n $N`

split -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