我想要一個bash shell腳本,我可以運行一個cron作業來檢查遠程服務器上的mysql是否正在運行。如果是,那就什麼都不做,其他的啓動服務器。shell腳本來檢查mysql是否啓動或關閉
cronjob將每分鐘檢查遠程服務器是否存在一個活的(或不)的mysql。我可以自己編寫cron作業,但是我需要shell腳本的幫助來檢查遠程mysql是啓動還是關閉。檢查後的反應是否上升或下降並不重要。但支票很重要。
我想要一個bash shell腳本,我可以運行一個cron作業來檢查遠程服務器上的mysql是否正在運行。如果是,那就什麼都不做,其他的啓動服務器。shell腳本來檢查mysql是否啓動或關閉
cronjob將每分鐘檢查遠程服務器是否存在一個活的(或不)的mysql。我可以自己編寫cron作業,但是我需要shell腳本的幫助來檢查遠程mysql是啓動還是關閉。檢查後的反應是否上升或下降並不重要。但支票很重要。
您可以使用下面的腳本
#!/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的建議達到我想要的效果。 –
腳本所選答案的偉大工程,但需要你有安裝在本地主機上的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在成功連接時返回的內容,因此您必須稍微使用它。
爲什麼不把cron作業放到運行mysql的服務器上? –
不知道它爲什麼降價!在運行集羣時,mysql有時會因網絡問題而停止運行。你不想爲了監視而24/7熬夜。 –