Linux

Monit 無法檢測到 MySQL,但我可以

  • October 23, 2017

Monit 配置為在 localhost 的 3306 埠上監視 MySQL。

check process mysqld with pidfile /var/lib/mysql/li175-241.pid
 start program = "/etc/init.d/mysql start"
 stop program = "/etc/init.d/mysql stop"
 if failed port 3306 protocol mysql then restart
 if 5 restarts within 5 cycles then timeout

我的應用程序配置為通過 localhost:3306 連接到 MySQL,執行良好並且可以訪問數據庫。我什至可以使用 MySQL Query Browser 通過埠 3306 遠端連接到數據庫。該埠是完全開放的,可以連接。因此,我非常確定它正在執行。

但是,執行monit -v顯示 Monit 無法在該埠上檢測到 MySQL。

'mysqld' failed, cannot open a connection to INET[localhost:3306] via TCP

這種情況一直發生,直到 Monit 決定不再按照配置跟踪 MySQL。

如何開始解決此問題?


sudo netstat -lnp | grep mysql返回以下內容:

tcp        0      0 173.230.135.241:3306    0.0.0.0:*               LISTEN      14357/mysqld    
unix  2      [ ACC ]     STREAM     LISTENING     265228   14357/mysqld        /var/run/mysqld/mysqld.sock

“mysqld”失敗,無法打開到 INET 的連接

$$ localhost:3306 $$通過 TCP

此錯誤表明 monit 正在嘗試連接到 localhost 上的埠 3306,即 IP 地址 127.0.0.1

tcp 0 0 173.230.135.241:3306 0.0.0.0:* 聽 14357/mysqld

此 netstat 輸出顯示 mysqld 正在偵聽提到的 IP 地址。它沒有在本地主機上監聽。

您要麼需要讓 mysqld 也監聽 localhost,要麼需要告訴 monit 檢查特定的 IP 地址,而不是預設為 localhost。

引用自:https://serverfault.com/questions/220219