【问题标题】:Shell script to check if mysql is up or down用于检查 mysql 是否启动或关闭的 shell 脚本
【发布时间】:2015-09-02 11:36:04
【问题描述】:

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

cronjob 将每分钟检查远程服务器是否有一个活动的(或不活动的)mysql。我可以自己编写 cron 作业,但我需要有关检查远程 mysql 是否启动或关闭的 shell 脚本的帮助。检查是否向上或向下后的响应并不重要。但检查很重要。

【问题讨论】:

  • 为什么不把cron作业放到运行mysql的服务器上呢?
  • 不知道为什么会有反对票!运行集群时,mysql 有时会因网络问题而停止。您不想全天候 24/7 进行监控。

标签: mysql shell cron


【解决方案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 在成功连接时返回什么,因此您必须尝试一下。

【讨论】:

  • 感谢您的回答,它对我帮助很大。但是,在我的版本中,我必须写 $check 而不是 "$check",这在您发布的答案中可能是错误的。
【解决方案2】:

你可以使用下面的脚本

#!/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

【讨论】:

  • 谢谢大家的建议。使用 Zafar 的建议,我能够实现我想要的。
猜你喜欢
  • 2014-05-25
  • 2014-10-31
  • 2019-11-20
  • 1970-01-01
  • 2021-12-16
  • 2013-10-21
  • 2014-08-21
  • 2016-06-08
  • 1970-01-01
相关资源
最近更新 更多