一、什么是Shell脚本。
1. shell是外壳的意思,就是Liunx操作系统的外壳。通过shell命令来操作和控制Liunx操作系统,Shell脚本就像Window下的Bat脚本一样,计算机接受用户输入的shell命令来对Liunx操作系统进行控制。shell脚本是对多个shell命令进行封装文件,以点sh后缀文件来执行多个shell命令提高效率。
二、Shell脚本作用
Shell脚本帮助Liunx系统对重复、复杂的Shell命令进行的一种封装,提高Liunx系统Shell命令的执行效率,让复杂的命令经过封装能够轻松、简单的执行。
三、shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
了解上面就行了我们主要实现自动修复功能实用性高。
三、LInux服务器跟目录创建文件夹。
四、LInux服务器跟目录创建.sh后缀脚本文件。
五、编辑sh脚本自动获取主服务器mysqlfile文件以及position值判断是否挂掉挂掉则重启。
复制就能用修改配置信息
执行命令 . xxx.sh 执行sh脚本。
#!/bin/bash
# 入口bash
source /etc/profile #指定环境变量
cd /scripts/ #先cd到当前目录这样就能保证我们后续在当前目录
mysql -u root -proot <<EOF #执行my命令检测是否成功
use testdatabase22;
select * from student;
EOF #结束mysql命令
rm -rf /scripts/log.log #每次进来先删除在保存做到最新的数据我们的主服务器日志文件
#获取当前的连接状态 IO进程 Sql进程
mysql -u root -proot -e "show slave status \G" |grep Yes|awk '{print $2}' >> log.log #截取二进制日志
#获取主服务器的 file文件以及 postion
mysql -h输入父Ip -u root -proot -e "show master status"|grep my|awk '{print $1}' >> lake.log #截取二进制日
mysql -h输入父Ip -u root -proot -e "show master status"|grep my|awk '{print $2}' >> lake.log #截取二进制日志
#保存变量
yesone=`cat log.log |sed -n '1p'`
yestwo=`cat log.log |sed -n '2p'`
masterfile=`cat lake.log |sed -n '1p'`
masterfileposti=`cat lake.log |sed -n '2p'`
echo $masterfile
echo $masterfileposti
#echo "$yesone"xnb
#echo "$yestwo"xnbtiw
#判断
#if [ "$yesone"xnb != "Yesxnb" ]
#then
# echo "执行失败第一个yes错误"
#else
# echo "成功执行!"
# fi
#查询文件如果第二yes没有则确实断开连接
if [ "$yestwo"xnbtiw != "Yes"xnbtiw ]
then
echo "执行失败断开连接请检查!"
echo "开始修复!第一步查询!"
mysql -u root -proot <<EOF
show variables like 'server_id';
stop slave;
set global server_id = 4;
show variables like 'server_id';
change master to master_host='父IP',master_user='repluser',master_password='qazxsw@123',master_log_file='$masterfile',MASTER_LOG_POS=$masterfileposti; #注意是number
start slave;
SHOW SLAVE STATUS\G;
EOF
echo "脚本修复成功!"
else
echo "成功执行!"
fi
六、宝塔配置脚本。
现在我们测试一下
1.将从数据库执行mysql重启第一个no为断开连接
2.查询宝塔脚本日志看看是否修复
总结:
1.创建文件夹—>添加文件执行脚本测试看是否成功——>宝塔执行定时任务添加脚本监控——>
重启mysql——>检查是否修复 。
以上则是这个自动修复脚本教程谢谢!。