本脚本来自有学习阿铭的博文学习:
我的每天要做的工作就要备份数据库,需要涉及到Percona Xtrabackup,mysql数据库中最良心的公司,解决了很多mysql数据库的bug。废话多说,开始脚本
提示:本文中的S全部都$符
#!/bin/bash
#用途:Shell多线程备份数据库的脚本。
#作者:Caron maktini
#日期:2019年1月5日
#版本:v0.1
##假设100个数据库的库名、host、port以及配置文件路径保存到了一个文件下,文件为/tmp/database.list
##格式:db1 10.1.1.2 3308 /data/mysql/db1/my.cnf
##备份数据库使用的软件是Percona Xtrabackup
exex &> /tmp/mysql_bak.log
if ! which innobackupex &> /dev/null
then
echo "安装Xtrabackup工具 "
rpm -ivh xtrabackup.tar
yum install -y percona-xtrabackup-24
if [ $? -ne 0 ]
then
echo "安装Xtrabackup工具,出现错误"
exit 1
fi
fi
bakdir=/data/backup/mysql
bakuser=admin
bakpass=administrator
function bak_data {
db_name=$1
db_host=$2
db_port=$3
cnf=$4
[ -d Sbakdir/Sdb_name ] || mkdir -p Sbakdir/$db_name
innobackupex --defaults-file=S4 --host=S2 --port = S3
--user=Sbakuser --password=Sbakpass Sbakdir
if [ $? -ne 0 ]
then
echo `备份数据库$1出现问题`
fi
}
fifofile=/tmp/$$
mkfifo $fifofile
exec 1000<> $fifofile
thread=10
for (( i=0;i<$thread; i++))
do
echo >&1000
done
cat /tmp/databases.Iist | while read line
do
read -u1000
{
bak_data ' echo $line`
echo >&1000
}&
done
wait
exec 1000>&-
rm -f $fifofile