Ndbcluster
啟動 ndb 節點時更好的診斷?
我有一個使用 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