Ndbcluster

啟動 ndb 節點時更好的診斷?

  • April 15, 2018

我有一個使用 mysql 集群 7.2.5 x64 的 ubuntu linux 伺服器。

每當我啟動 ndb 節點並檢查時ndb_mgm -e show,它都會長時間處於“啟動”狀態。當我使用 top 檢查程序時,它需要 70-90% 的 CPU,這意味著它正在做某事。

有沒有辦法檢查它在做什麼並估計它什麼時候完成?

您可以查看發生了什麼,ndb_mgm -e 'N report eventlog'其中 N 是數據節點的 nodeid。這不一定會給你估計什麼時候完成,但它可以用來驗證事情確實在發生,並且 ndbd 不只是無限期地旋轉。

ndb_mgm -e 'all status'也很有用,因為它會向您顯示數據節點所處的目前階段。您可以在 MySQL 5.5 參考手冊中的 NDB 集群啟動階段摘要中閱讀有關階段的更多資訊。

問題是第 4 階段非常緩慢。在登錄最新版本的 ndb 方面已經有了一些改進,但我發現這個階段最有用的檢查是密切關注數據記憶體。

即比較

ndb_mgm -e'1 report memoryusage'
ndb_mgm -e'2 report memoryusage'

一旦起始節點的使用量與其他節點差不多,您只需一分鐘左右的時間。

所以我用這個

#!/bin/bash

id=${1//\'/}
ndb_mgm -e"$id status" | grep ': started' && exit 0 || ndb_mgm -e"$id start"

check=`ndb_mgm -e"$id status"`
count=0
echo $check
while [[ "$check" == *": starting"* ]]; do
 echo -n .
 count=$(( $count + 1 ))
 if [[ $(( $count % 12 )) == 0 ]]; then
   ndb_mgm -e"$id report memoryusage"
 fi
 sleep 5
 check=`ndb_mgm -e"$id status"`
done

if [[ "$check" == *": started"* ]]; then
 echo "$check ...about to double check status"
 sleep 10
 service mysql-ndbd status
else
 echo "FAILED: $check"
 exit 1
fi

引用自:https://dba.stackexchange.com/questions/18217