多台MySQL服务器多个数据库遍历查询数据脚本
脚本目的:解决数据分散存储在多台MySQL服务器上,每台服务器有多个数据库需要遍历查询的痛点。
文件说明:
mysqllist文件记录需要查询的数据库服务器的登录信息,包括IP、端口、账号、密码 这四个信息。
sqllist文件记录的是需要遍历服务器IP及数据据库名称。
使用说明:
需要在一台Centos7系统先安装MySQL客户端。 (我是使用MySQL官网下载对应版本MySQL客户端RPM安装包 mysql-community-client-5.7.36-1.el7.x86_64);
安装完成后执行 bash select.sh 即可,按照提示输入需要的内容,完成后等待结果即可。
#!/bin/bash
cat <<EOF
*********************************************
****** 1.使用身份证查询 ******
****** 2.使用手机号查询 ******
****** 3.自定义编码查询 ******
****** 4.全局编号ID查询 ******
****** 5.机构全局ID编号查询 ******
****** 6.退出 ******
*********************************************
EOF
read -p "选择编号: " OP
case $OP in
1)
read -p "输入身份证号:" value
TJ="id_number ='${value}'"
echo "身份证查询条件:${TJ}"
;;
2)
read -p "输入手机号:" value
TJ="mobile_number ='${value}'"
echo "手机号查询条件:${TJ}"
;;
3)
read -p "输入custom_code=" value
TJ="custom_code ='${value}'"
echo "自定义编码查询条件:${TJ}"
;;
4)
read -p "输入global_id=" value
TJ="global_id ='${value}'"
echo "全局ID编号查询条件:${TJ}"
;;
5)
read -p "输入organiz_global_id= " value
TJ="organiz_global_id ='${value}'"
echo "机构全局ID编号查询条件:${TJ}"
;;
6)
echo "已退出!"
exit
;;
*)
echo "选择编号错误,程序已退出!"
exit
esac
for i in $(seq 20 60);do
host=192.168.3.$i
port=$( grep "$host" mysqllist.txt | awk '{print $2}' )
user=$( grep "$host" mysqllist.txt | awk '{print $3}' )
password=$( grep "$host" mysqllist.txt | awk '{print $4}' )
for j in $( grep $host sqllist.txt | awk '{print $2}' );do
echo "#!/bin/bash" > /tmp/select.sh
echo "mysql -h $host -P $port -u $user -p'$password' -e \"SELECT * FROM ${j}.member_simple_info WHERE ${TJ};\"" >> /tmp/select.sh
echo " " >> /tmp/select.sh
echo "============================192.168.3.$i 查询 ${j} 数据库结果为:============================" > /tmp/select.log
bash /tmp/select.sh >> /tmp/select.log 2>&1
if [[ `grep -v "Using a password on the command line interface can be insecure" /tmp/select.log | wc -l` > 2 ]] ;then
cat /tmp/select.log
fi
done
done
备份下载地址:select.tar.gz
文章目录
关闭