shell批量远程连接mysql的方法

一、配置mysql服务器ip列表如下,可自定义:

S1     1.1.1.1     3306 user passwd11   dbname_s1
S2      2.2.2.2     3306 user passwd22  dbname_s2
S3      3.3.3.3     3306 user passwd33  dbname_s3

二、#linux批量连接多服务器的shell脚本如下:

方法(1):数组方法

#!/bin/bash

if [[ "$#" -lt "2" ]]
 then
     echo "error"
     echo "for example:$0 dbip.ini 20141001/select.sql"
    exit 1
fi


name=(`cat /root/scripts/$1 | awk '{print$1}'`)
ip=(`cat /root/scripts/$1 | awk '{print$2}'`)
port=(`cat /root/scripts/$1 | awk '{print$3}'`)
user=(`cat /root/scripts/$1 | awk '{print$4}'`)
pass=(`cat /root/scripts/$1 | awk '{print$5}'`)
db_name=(`cat /root/scripts/$1 | awk '{print$6}'`)
time=`date -d '-1 day' +%Y%m%d`
touch /home/data/$time.txt
len=${#ip[*]}
num=0
while [ $num -lt $len ]
do
  echo "===========  ${name[$num]}  ============="
  echo "===========  ${name[$num]}  =============" >> /home/data/$time.txt
  mysql -u${user[$num]} -p${pass[$num]} -h${ip[$num]} -P${port[$num]} ${db_name[$num]} < $2
  let num++
done

方法(2),read读取

#!/bin/bash

if [[ "$#" -lt "2" ]]
 then
     echo "error"
     echo "for example:$0 dbip.ini 20141001/select.sql"
    exit 1
fi
cat $1 | while read line
do
   name=(`echo $line | awk '{print$1}'`)
   ip=(`echo $line | awk '{print$2}'`)
   port=(`echo $line | awk '{print$3}'`)
   user=(`echo $line | awk '{print$4}'`)
   pass=(`echo $line | awk '{print$5}'`)
   db_name=(`echo $line | awk '{print$6}'`)
   echo "====================$name==============="
   mysql -u$user -p$pass -h$ip -P$port $db_name < $2
done

三、脚本运行方式,sh jiaoben.sh 参数1 参数2

参数1=dbip.ini(mysql服务器的配置列表)

参数2=需要运行的sql语句的文本,

师例:比如我的脚本名字为,gomysql.sh  需要运行的sql放在select.sql的记事本里面,运行方法如下:

sh gomysql_gamedb.sh dbip.ini select.sql

转载于:https://www.cnblogs.com/franjia/p/4384172.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值