web-dev-qa-db-ja.com

2つのシステムでのMySQL Clusterのセットアップ

MySQL Clusterをセットアップしようとしています。

私は次の設定をしています

  • 1つの管理ノード
  • 2つのデータノード
  • さらに2つのノードが存在する別のマシン

以下はconfig.iniファイルです。

 [ndbd default] 
 
#すべてのデータノードのndbdプロセスに影響するオプション:
 NoOfReplicas = 2#レプリカの数
 
 DataMemory = 80M#データストレージに割り当てるメモリ量
 
 IndexMemory = 18M#インデックスストレージに割り当てるメモリ量
 
#DataMemoryおよびIndexMemoryの場合、
#デフォルト値を使用しました。 「ワールド」データベースが占有するので、
#約500KBだけなので、これは
#この例のクラスタセットアップには十分以上です。
 
 DataDir =/var /lib/mysql-cluster

[MYSQLD DEFAULT] 
 
 [NDB_MGMD DEFAULT] 
 
 LogDestination = FILE:filename = my-cluster.log 
 
 
 [tcp default] 
 
 [ndb_mgmd] 
 
#管理プロセスオプション:
 hostname = XXX26#MGMノードのホスト名またはIPアドレス
 
 datadir =/var/lib/mysql-cluster#MGMノードログファイルのディレクトリ
 
#ストレージノード
 [NDBD] 
 
 hostname = XXX26#storage-node-1のIPアドレス
 
 DataDir = /var/lib/mysql-cluster

[NDBD]

HostName=XXX73#storage-node-2のIPアドレス
 
 DataDir = /var/lib/mysql-cluster

[NDBD]
hostname=XXX26#ストレージノード3のIPアドレス
 DataDir = /var/lib/mysql-cluster

[NDBD]
HostName=XXX73#storage-node-4のIPアドレス
 DataDir =/var/lib /mysql-cluster

# mySQL APIサーバーのセットアップノードID(クラスターのクライアント)
 
 [mysqld] 
#SQLノードオプション:
 hostname = XXX73#ホスト名またはIPアドレス
#(追加のmysqld接続を指定できます
#さまざまな目的でこのノードに指定できます
#実行などの目的ndb_restore)

以下は、両方のシステムの_my.cnf_ファイルです。

 [mysqld] 
 
 ndbcluster#NDBストレージエンジンを実行します
 
 ndb-connectstring = XXX26#管理サーバーの場所
 
 [mysql_cluster] 
 
 ndb-connectstring = XXX26#管理サーバーの場所
 

クラスターを起動しようとすると、次のエラーが発生します。

_Could not determine which NodeID to use for this node. Specify it with --ndb-nodeid=<nodeid> on command line_

クラスタリングのセットアップが完了した場合、別のエラーが再度表示されるため、データの複製はありません:ERROR 1296 (HY000): Got error 4009 'Cluster Failure' from NDBCLUSTER

誰かが問題を特定するのを手伝ってくれる?

4
Yogesh Ballani

あなたの管理構成は私には問題ないようです。 ndb_mgmdが完全に停止しなかったか、管理サーバーの/ var/lib/mysql-clusterディレクトリの内容に問題があるようです。

/etc/init.d/の起動スクリプトなどを使用して、ndb_mgmdが自動的に起動しないようにすることもできます。

問題を解決するには、まずこれらの手順から始めます

まだ始まったばかりで、実際のデータはまだありません。

  1. 残りのndb_mgmdプロセスをkillall ndb_mgmdで強制終了するか、killallが役に立たない場合は再起動します。
  2. / var/lib/mysql-cluster内のすべてを完全に削除します:rm -Rf /var/lib/mysql-cluster/*
  3. クラスタプロセスを再度開始します:ndb_mgmd -f /etc/config.ini --initial
  4. Ndb_mgmdがnetstatでリッスンしていることを確認します

    $> netstat -tlpn

    アクティブなインターネット接続(サーバーのみ)Proto Recv-Q Send-Qローカルアドレス外部アドレス状態PID /プログラム名
    tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 3251/ndb_mgmd

管理ノードに接続

$> ndb_mgm
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration


[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.9.26  (mysql-5.1.61 ndb-7.1.22)

更新

Oracleのクイックスタートガイドは、すべてのノード、管理、mysql、データが1つのサーバーで実行されています。

http://downloads.mysql.com/tutorials/cluster/GetMySQLClusterRunning-LINUX.pdf

2
Craig Efrein

考慮すべき2つの点:マシンごとに2つのデータノードがある場合、管理サーバーは2つのデータノードのどちらを開始するかを決定できません。したがって、ndbmtd/ndbdを起動するときに--ndb-nodeidオプションを使用してこれを指定する必要があります。

次に、完全に利用可能なセットアップには、3台目のマシンが必要です。それ以外の場合は、いずれかのマシンでハードウェアクラッシュが発生しても50%しか残っていません。 HWクラッシュでマシン上のすべてのノードに障害が発生すると、アービトレーターもクラッシュする可能性が50%になります。

アービトレーターは、ノードの半分に障害が発生した場合にクラスターのどの部分が存続するかを決定するために使用されます。

データノードがまだ開始されておらず、MySQLサーバーを介してデータをクエリしようとしている場合、取得するエラーは4009です。

0