我想要一个bash shell脚本,我可以使用cron作业来检查远程服务器上的mysql是否正在运行。如果是,则不执行任何操作,其他启动服务器。
cronjob将每分钟检查远程服务器是否有实时(或不是)mysql。我可以自己编写cron作业,但我需要帮助查看远程mysql是up还是down的shell脚本。检查上升或下降后的响应并不重要。但检查很重要。
答案 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在成功连接时返回的内容,因此您必须稍微使用它。