這兩天遇到一個非常詭異的問題,打算和大家分享一下。只所以詭異估計是自己知識面不夠吧。線上的MHA一直沒有開啟自動切換,都是手動切換的,最近開啟了自動切換以后,退出securecrt窗口以后發現監控進程異常自己退出了。報錯日志如下:
MHA版本:0.56
Checking the Status of the script.. OK Thu Jul 30 11:59:08 2015 - [info] OK. Thu Jul 30 11:59:08 2015 - [warning] shutdown_script is not defined. Thu Jul 30 11:59:08 2015 - [info] Set master ping interval 5 seconds. Thu Jul 30 11:59:08 2015 - [warning] secondary_check_script is not defined. It is highly recommended setting it to check master reachability from two or more routes. Thu Jul 30 11:59:08 2015 - [info] Starting ping health check on 10.69.237.181(10.69.237.181:3306).. Thu Jul 30 11:59:08 2015 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond.. Thu Jul 30 11:59:12 2015 - [info] Got terminate signal. Exit.
可以看見日志里面有Got terminate signal. Exit.提示。啟動方法和官方的沒有區別,官方的啟動監控進程如下:
通過nohup掛到后台執行發現退出securecrt后監控進程就異常退出。有朋友說是securecrt的bug,這個還有待測試。最后采用把命令寫到腳本里面,再執行就沒有異常了。
很簡單,腳本start_monitor.sh如下:
#!/bin/bash /usr/bin/nohup /usr/local/bin/masterha_manager --conf=/data/mha/3306/mha.cnf --ignore_last_failover > /data/mha/3306/log/manager.log 2>&1 &
啟動監控:
/bin/bash start_monitor.sh
當然官方還提到另一種方法;使用daemon的方式運行,這個是為了避免MHA切換以后進程退出的方法。
參考資料:
https://code.google.com/p/mysql-master-ha/wiki/Runnning_Background