shell实现多线程备份恢复数据库

shell实现多线程备份恢复数据库

备份
#!/bin/bash
trap "exec 6>&-;exec 6<&-;wxit 0" 2
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
# 这里是并发线程数
thread=20
for ((i=0; i<=$thread;i++))
do
  echo
done >&6
# 下面是具体执行语句
USER="root"
PASSWD="123456"
HOSTS="127.0.0.1"
for DB in `mysql -u${USER} -p${PASSWD} -h${HOSTS} -e "show databases;" 2>/dev/null`
do
read -u6
{
  mysqldump -u${USER} -p${PASSWD} -h${HOSTS} --single-transaction --set-gtid-purged=OFF 2>/dev/null $DB > $DB.sql
  echo >& 6
}&
done
wait
exec 6>&-
exec 6<&-
恢复
#!/bin/bash
trap "exec 6>&-;exec 6<&-;wxit 0" 2
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
thread=20
for ((i=0; i<=$thread;i++))
do
  echo
done >&6
USER="root"
PASSWD="123456"
HOSTS="127.0.0.1"
for DB in `ls *.sql | awk -F. '{print $1}'`
do
read -u6
{
  mysql -u${USER} -p${PASSWD} -h${HOSTS} -e "CREATE DATABASE ${DB} 2>/dev/null"
  mysql -u${USER} -p${PASSWD} -h${HOSTS} ${DB} 2>/dev/null < ${DB}.sql
  echo >& 6
}&
done
wait
exec 6>&-
exec 6<&-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值