web-dev-qa-db-ja.com

ndbノードを起動するときのより良い診断?

Mysql cluster 7.2.5x64を使用するubuntulinuxサーバーがあります。

Ndbノードを起動してndb_mgm -e showで確認すると、長時間「起動」状態のままになります。 topを使用してプロセスをチェックすると、70〜90%のCPUが必要になります。これは、何かを実行していることを意味します。

それが何をしているのかをチェックし、いつ終了するかを見積もる方法はありますか?

1
ufk

ndb_mgm -e 'N report eventlog'で何が起こっているかを確認できます。ここで、NはデータノードのノードIDです。これは必ずしもいつ終了するかを予測するものではありませんが、実際に処理が行われていること、およびndbdが無期限に回転しているだけではないことを確認するために使用できます。

ndb_mgm -e 'all status'は、データノードの現在のフェーズを表示するので便利です。フェーズの詳細については、MySQL 5.5リファレンスマニュアルの NDBクラスター開始フェーズの概要 を参照してください。

4
dpk

問題は、非常に遅いフェーズ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
0
KCD