Mysql cluster 7.2.5x64を使用するubuntulinuxサーバーがあります。
Ndbノードを起動してndb_mgm -e show
で確認すると、長時間「起動」状態のままになります。 topを使用してプロセスをチェックすると、70〜90%のCPUが必要になります。これは、何かを実行していることを意味します。
それが何をしているのかをチェックし、いつ終了するかを見積もる方法はありますか?
ndb_mgm -e 'N report eventlog'
で何が起こっているかを確認できます。ここで、NはデータノードのノードIDです。これは必ずしもいつ終了するかを予測するものではありませんが、実際に処理が行われていること、およびndbdが無期限に回転しているだけではないことを確認するために使用できます。
ndb_mgm -e 'all status'
は、データノードの現在のフェーズを表示するので便利です。フェーズの詳細については、MySQL 5.5リファレンスマニュアルの NDBクラスター開始フェーズの概要 を参照してください。
問題は、非常に遅いフェーズ4です。最新バージョンのndbへのログインにはいくつかの改善がありましたが、このフェーズで最も役立つチェックは、データメモリを監視することです。
つまり比較する
ndb_mgm -e'1 report memoryusage'
ndb_mgm -e'2 report memoryusage'
開始ノードが他のノードとほぼ同じ量を使用すると、わずか1分ほどで済みます。
だから私はこれを使います
#!/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