nmap 掃描 3306 端口是否開放。mysqld_safe。SHOW DATABASES 驗證服務可用性。kill -9 所有 MySQL 進程 → 重啟 mysqld_safe(避免正常關閉失敗導致無法重啟)。#!/bin/bash
# 依賴 nmap,請先安裝:yum/apt install nmap
# 檢測端口
/usr/bin/nmap localhost | grep 3306
if [ $? -eq 0 ]; then
# 端口存在,驗證連接
/usr/local/mysql/bin/mysql -u用戶 -p密碼 --connect_timeout=5 -e "SHOW DATABASES;"
if [ $? -ne 0 ]; then
# 連接失敗,強制殺進程重啟
/bin/ps aux | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9
/usr/local/mysql/bin/mysqld_safe --user=mysql & > /dev/null
fi
else
# 端口不存在,直接啟動
/usr/local/mysql/bin/mysqld_safe --user=mysql & > /dev/null
fi
/usr/local/bin/mysql_monitor.sh,賦予執行權限 chmod +x。crontab 定時執行(如每分鐘):* * * * * root /usr/local/bin/mysql_monitor.shPROCESS, REPLICATION CLIENT 權限)。~/.my.cnf 避免明文。MySQL 某些故障狀態下(如磁盤滿、鎖死、InnoDB 恢復卡住)mysqladmin shutdown 無響應,進程殘留佔用端口導致正常啟動失敗。kill -9 強制釋放資源,配合 mysqld_safe 自動安全啟動(含崩潰恢復),是最後防線。