首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 狀態監控腳本:端口檢測、連接驗證與自動重啟一體化方案

     編輯:MySQL 資料庫相關知識

腳本功能

  1. 用 nmap 掃描 3306 端口是否開放。
  2. 端口不存在 → 直接啟動 mysqld_safe。
  3. 端口存在 → 嘗試連接執行 SHOW DATABASES 驗證服務可用性。
  4. 連接失敗 → kill -9 所有 MySQL 進程 → 重啟 mysqld_safe(避免正常關閉失敗導致無法重啟)。
  5. 連接成功 → 無操作。

完整腳本

#!/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.sh
  • 生產環境建議:
  1. 使用專用監控用戶(僅 PROCESS, REPLICATION CLIENT 權限)。
  2. 密碼存放於 ~/.my.cnf 避免明文。
  3. 日誌輸出重定向至文件便於審計。
  4. 結合系統級監控(systemd、systemctl)而非純腳本守護。

為何用 kill -9 而非正常重啟?

MySQL 某些故障狀態下(如磁盤滿、鎖死、InnoDB 恢復卡住)mysqladmin shutdown 無響應,進程殘留佔用端口導致正常啟動失敗。kill -9 強制釋放資源,配合 mysqld_safe 自動安全啟動(含崩潰恢復),是最後防線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved