加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell学习十四--编写监控mysql脚本

发布时间:2020-12-15 16:17:40 所属栏目:安全 来源:网络整理
导读:shell编写监控mysql脚本 判断服务存活方法 1、端口 [root@node01 ~]# netstat -lntup|grep 330 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 127641/mysqld 2、进程判断 [root@node01 ~]# ps -ef |grep mysqld root 127539 1 0 17:58 pts/2 00:00:00 /bin/sh /usr/
shell编写监控mysql脚本

判断服务存活方法
1、端口
[root@node01 ~]# netstat -lntup|grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 127641/mysqld

2、进程判断
[root@node01 ~]# ps -ef |grep mysqld
root 127539 1 0 17:58 pts/2 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 127641 127539 0 17:58 pts/2 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 127670 127096 0 17:59 pts/2 00:00:00 grep mysqld

3、登录,看返回值
[root@node01 ~]# mysql -uroot -p1323 -e "select version();"
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@node01 ~]# echo $?
1
[root@node01 ~]# mysql -uroot -p123 -e "select version();"
+-----------+
| version() |
+-----------+
| 5.1.73 |
+-----------+
[root@node01 ~]# echo $?
0
[root@node01 ~]#

脚本提示:不要用3306去判断,还要去用整数判断,一旦为空就报错了(比如没起来),可以取字符串(过程太长,过程太复杂)

最好的方式是用wc -l 转行为行数判断

===============================================================

例子1: [root@node01 day5]# vi mysql_chk.sh #!/bin/bash port="`netstat -lntup |grep 3306|wc -l`" if [ $port -eq 1 ];then echo "mysql start" else /etc/init.d/mysqld start fi 例子2: [root@node01 day5]# vi mysql_chk.sh #!/bin/bash port="`netstat -lntup |grep 3306|wc -l`" if [ $port -ne 1 ];then /etc/init.d/mysqld start fi 例子3: #!/bin/bash port="`ps -ef |grep mysql|grep -v grep|wc -l`" if [ $port -ne 2 ];then /etc/init.d/mysqld start fi [root@node01 day5]# ps -ef |grep mysql|grep -v grep|wc -l 2 [root@node01 day5]# sh -x mysql_chk4.sh 脚本里不要出现名字 ++ wc -l ++ grep -v grep ++ grep mysql ++ ps -ef + port=4 + '[' 4 -ne 2 ']' 这里有问题 + /etc/init.d/mysqld start Starting mysqld: [ OK ] 例子4: [root@node01 day5]# vi mysql_chk1.sh #!/bin/bash SERVER="`netstat -lntup | grep 3306`" if [ -n "$SERVER" ];then echo "mysqld is running" else /etc/init.d/mysqld start fi 例子5: [root@node01 day5]# vi mysql_chk2.sh #!/bin/bash processcount=`ps -ef|grep mysql|grep -v grep|grep -v mysql_chk2.sh|wc -l` 切记这里脚本带mysql,一定要过滤或者脚本名字不带mysql port=`netstat -lntup|grep 3306|wc -l` if [ $processcount -eq 2 ] && [ $port -eq 1 ] then echo "mysql running" else /etc/init.d/mysqld start fi [root@node01 day5]# sh mysql_chk2.sh mysql running [root@node01 day5]# pkill mysqld [root@node01 day5]# pkill mysqld [root@node01 day5]# pkill mysqld [root@node01 day5]# sh mysql_chk2.sh Starting mysqld: [ OK ] [root@node01 day5]# sh mysql_chk2.sh Starting mysqld: [ OK ] [root@node01 day5]# sh mysql_chk2.sh mysql running [root@node01 day5]# sh mysql_chk2.sh mysql running [root@node01 day5]# 例子6: [root@node01 day5]# vi check_db_client.sh #!/bin/bash mysql -uroot -p123 -e "select version();" &>/dev/null if [ $? -ne 0 ] then /etc/init.d/mysqld start else echo "mysql is running" fi [root@node01 day5]# sh check_db_client.sh mysql is running [root@node01 day5]# pkill mysqld [root@node01 day5]# sh check_db_client.sh Starting mysqld: [ OK ] [root@node01 day5]# pkill mysqld [root@node01 day5]# sh check_db_client.sh ^[[AStarting mysqld: [ OK ] 利用mysql启动原理来写监控脚本 [root@node01 day5]# vi db_chk.sh #!/bin/bash pidfile="/var/run/mysqld/mysqld.pid" datadir="/var/lib/mysql" if [ ! -f $pidfile ];then /bin/sh /usr/bin/mysqld_safe --datadir=$datadir --pid-file=$pidfile & touch /var/run/mysqld else echo "Mysql is running" fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读