2015-06-17 47 views
0

我想要一個bash shell腳本,我可以運行一個cron作業來檢查遠程服務器上的mysql是否正在運行。如果是,那就什麼都不做,其他的啓動服務器。shell腳本來檢查mysql是否啓動或關閉

cronjob將每分鐘檢查遠程服務器是否存在一個活的(或不)的mysql。我可以自己編寫cron作業,但是我需要shell腳本的幫助來檢查遠程mysql是啓動還是關閉。檢查後的反應是否上升或下降並不重要。但支票很重要。

+0

爲什麼不把cron作業放到運行mysql的服務器上? –

+0

不知道它爲什麼降價!在運行集羣時,mysql有時會因網絡問題而停止運行。你不想爲了監視而24/7熬夜。 –

回答

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 
+0

謝謝大家的建議。我能用Zafar的建議達到我想要的效果。 –

0

腳本所選答案的偉大工程,但需要你有安裝在本地主機上的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在成功連接時返回的內容,因此您必須稍微使用它。

相關問題