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
[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 的絕對路徑