最近遇到一個很是詭異的問題,mha後臺進程本身中斷退出了。如下是報錯:
Mon Dec 21 20:16:07 2015 - [info] OK.
Mon Dec 21 20:16:07 2015 - [warning] shutdown_script is not defined.
Mon Dec 21 20:16:07 2015 - [info] Set master ping interval 1 seconds.
Mon Dec 21 20:16:07 2015 - [info] Set secondary check script: /etc/mha/bin/masterha_secondary_check -s 192.168.17.93 -s 192.168.18.93
Mon Dec 21 20:16:07 2015 - [info] Starting ping health check on 192.168.17.94(192.168.17.94:3306)..
Mon Dec 21 20:16:07 2015 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..
Tue Dec 22 10:36:42 2015 - [info] Got terminate signal. Exit.html
看報錯第一反應理解爲因爲中斷信號斷開而致使退出程序mysql
這裏有個疑問:爲何我用nohup /etc/mha/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover &
這樣的方式執行後臺運行命令,怎麼程序會隨終端斷開而退出呢?想不通。印象中之前執行都沒有這樣的問題的,確定是哪裏不對sql
查閱nohup相關的資料:
使用時注意:
在當shell中提示了nohup成功後,還須要按終端上鍵盤任意鍵退回到shell輸入命令窗口,而後經過在shell中輸入exit來退出終端;若是在nohup執行成功後直接點關閉程序按鈕關閉終端的話,這時候會斷掉該命令所對應的session,致使nohup對應的進程被通知須要一塊兒shutdown,起不到關掉終端後調用程序繼續後臺運行的做用。shell
看到這裏回憶下以前本身的操做多是有問題的,因而對nohup操做進行下面測試:
注:mha管理服務端是安裝在A機器上,服務器
測試1:直接鏈接mysqlA服務器,在A服務器執行nohup /etc/mha/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover & ,正常退出,或直接關閉終端退出都不會引發mha後臺進程異常退出。session
測試2:先鏈接mysqlB服務器,再從B服務器ssh到A服務器,再重複上面的命令當執行完後臺命令後正常exit退出終端後,一切和上面的操做同樣,mha後臺進程不會異常退出。app
測試3:先鏈接mysqlB服務器,再從B服務器ssh到A服務器,再重複上面的命令當執行完後臺命令後非正常退出(終端超時斷開或直接關閉securecrt程序)的話,這個時候mha後臺進程也跟隨終端退出而退出.ssh
仔細回憶了下我確實是經過某臺服務器ssh到mha服務器上面執行的命令沒有正常退出終端形成的。問題終於找到了測試
固然若是你的問題和個人不同也能夠用另外方法避免後臺進程異常退出,那就是把命令寫在腳本里面經過運行腳本就萬無一失了.htm
轉載:
https://www.cnblogs.com/mysqlplus/p/5070757.html