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

MySQL Cluster 管理節點與數據節點自動存活監控腳本

     編輯:MySQL 資料庫相關知識

背景

MySQL Cluster 僅能自動踢出故障節點,無法自動將恢復的節點拉回叢集。若網路抖動或其他異常導致節點離線,需人工介入或自動化腳本輔助恢復。本文提供管理節點與數據節點的存活檢測與自動重啟腳本,配合 crontab 實現每分鐘巡檢。

一、管理節點監控腳本

#!/bin/bash
# mgmd_check_online.sh
# Created by david yeung 2007-12-20
# 檢測 ndb_mgmd 進程是否存活

ps afx | grep -w ndb_mgmd | grep -v grep 1>&/dev/null

if [ $? == 0 ]; then
    echo "!-------MGMD is ok-------------!" >> /var/log/mgmd-check-online.log
else
    # 管理節點異常,記錄時間並重啟
    echo "Check date:$(date '+%Y-%m-%d %H:%M:%S')" | tee -a /var/log/mgmd-check-online.log
    echo "!-------MGMD is dead ----------!" | tee -a /var/log/mgmd-check-online.log
    /usr/local/mysql/ndb_mgmd -f /etc/config.ini
    echo "!-------MGMD NODE OK-----------!" | tee -a /var/log/mgmd-check-online.log
fi
exit 0

加入 crontab(每分鐘執行)

[root@localhost TM]# crontab -l
*/1 * * * * /usr/local/scripts/mgmd_check_online.sh

日誌輸出範例

!-------MGMD is ok-------------!
Check date:2007-12-20 16:52:51
!-------MGMD is dead ----------!
!-------MGMD NODE OK-----------!

二、數據節點監控腳本

#!/bin/bash
# ndbd_check_online.sh
# Created by david yeung 2007-12-20
# 檢測 ndbd 進程是否存活

ps afx | grep -w ndbd | grep -v grep 1>&/dev/null

if [ $? == 0 ]; then
    echo "!-------NDBD is ok-------------!" >> /var/log/ndbd-check-online.log
else
    # 數據節點異常,記錄並重啟
    echo "!-------NDBD is dead ----------!" | tee -a /var/log/ndbd-check-online.log
    echo "Check date:$(date '+%Y-%m-%d %H:%M:%S')" | tee -a /var/log/ndbd-check-online.log
    echo "!-------RESTART NDBD ----------!" | tee -a /var/log/ndbd-check-online.log
    /usr/local/mysql/bin/ndbd
    echo "!-------NDBD NODE OK-----------!" | tee -a /var/log/ndbd-check-online.log
fi
exit 0

三、部署建議

  • 將腳本放置於 /usr/local/scripts/ 並賦予執行權限:chmod +x *.sh
  • 確保日誌目錄 /var/log/ 可寫入
  • 根據實際安裝路徑調整 ndb_mgmd、ndbd 及 config.ini 的絕對路徑
  • 生產環境建議加入更完善的告警機制(如郵件、短信通知)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved