最近遇到一個非常詭異的問題,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.
看報錯第一反應了解為由于中斷信号斷開而導緻退出程式
這裡有個疑問:為什麼我用nohup /etc/mha/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover &
這樣的方式執行背景運作指令,怎麼程式會随終端斷開而退出呢?想不通。印象中以前執行都沒有這樣的問題的,肯定是哪裡不對
查閱nohup相關的資料:
使用時注意:
在當shell中提示了nohup成功後,還需要按終端上鍵盤任意鍵退回到shell輸入指令視窗,然後通過在shell中輸入exit來退出終端;如果在nohup執行成功後直接點關閉程式按鈕關閉終端的話,這時候會斷掉該指令所對應的session,導緻nohup對應的程序被通知需要一起shutdown,起不到關掉終端後調用程式繼續背景運作的作用。
看到這裡回憶下之前自己的操作可能是有問題的,于是對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背景程序異常退出。
測試2:先連接配接mysqlB伺服器,再從B伺服器ssh到A伺服器,再重複上面的指令當執行完背景指令後正常exit退出終端後,一切和上面的操作一樣,mha背景程序不會異常退出。
測試3:先連接配接mysqlB伺服器,再從B伺服器ssh到A伺服器,再重複上面的指令當執行完背景指令後非正常退出(終端逾時斷開或直接關閉securecrt程式)的話,這個時候mha背景程序也跟随終端退出而退出.