用于检查mysql是up还是down的Shell脚本

时间:2015-06-17 09:52:03

标签: mysql shell cron

我想要一个bash shell脚本,我可以使用cron作业来检查远程服务器上的mysql是否正在运行。如果是,则不执行任何操作,其他启动服务器。

cronjob将每分钟检查远程服务器是否有实时(或不是)mysql。我可以自己编写cron作业,但我需要帮助查看远程mysql是up还是down的shell脚本。检查上升或下降后的响应并不重要。但检查很重要。

2 个答案:

答案 0 :(得分:4)

您可以使用以下脚本

#!/bin/bash

USER=root
PASS=root123

mysqladmin -h remote_server_ip -u$USER -p$PASS processlist ###user should have mysql permission on remote server. Ideally you should use different user than root.

 if [ $? -eq 0 ]
        then
                echo "do nothing"
        else
                ssh remote_server_ip  ###remote server linux root server password should be shared with this server.
                service mysqld start
 fi

答案 1 :(得分:1)

所选答案中的脚本运行良好,但要求您在本地主机上安装MySQL客户端。我需要类似Docker容器的东西,并且不想安装MySQL客户端。这就是我想出的:

# check for a connection to the database server
#
check=$(wget -O - -T 2 "http://$MYSQL_HOST:$MYSQL_PORT" 2>&1 | grep -o mariadb)

while [ -z "$check" ]; do
    # wait a moment
    #
    sleep 5s

    # check again
    #
    check=$(wget -O - -T 2 "http://$MYSQL_HOST:$MYSQL_PORT" 2>&1 | grep -o mariadb)
done

这有点不同,因为它将循环直到可以建立数据库连接。我也使用MariaDB而不是库存MySQL数据库。您可以通过将grep -o mariadb更改为其他内容来更改此设置 - 我不确定MySQL在成功连接时返回的内容,因此您必须稍微使用它。