web-dev-qa-db-ja.com

実際のMySQL Clusterの問題

MySQLクラスターを研究しています。そのために、4つの仮想マシンを使用してデモを行います。実際にいくつか問題があります。

トポロジ

トポロジに4つのノードが含まれているNode 1:管理ノード、IPアドレス192.168.56.205 Node 2:SQLノード、IPアドレス192.168.56.206 Node 3:データノード1、IPアドレス192.168.56.207 Node 4:データノード2、IPアドレス192.168.56.208

その他の情報

  • Linux OS:Centos 6.4、32ビット
  • Linuxカーネル:2.6.32-358.el6.i686
  • MySQL Clusterのバージョン:MySQL-Cluster-gpl-7.3.6-2.el6.i686.rpm-bundle.tar
  • RAM 128MB
  • ファイアウォールのiptablesをオフにしました
  • 無効にされたselinux

インストール

  • 4つのノードすべてに、MySQL-Cluster-server-gpl-7.3.6-2.el6.i686.rpmおよびMySQL-Cluster-shared-compat-gpl-7.3.6-2.el6.i686.rpmをインストールします
  • Node 2-sql node以外は、MySQL-Cluster-client-gpl-7.3.6-2.el6.i686.rpmをさらにインストールします

構成

On node 1-management node

  • / var/lib/mysql-clusterディレクトリを作成し、owner:groupをmysql:mysqlに割り当てます。
  • /var/lib/mysql-cluster/config.iniを作成します。

    [ndbdデフォルト]
    NoOfReplicas = 2
    DataMemory = 80M
    IndexMemory = 18M

    [tcpデフォルト]
    ポート番号= 2202

    [ndb_mgmd]
    ホスト名= 192.168.56.205
    datadir =/var/lib/mysql-cluster

    [ndbd]
    ホスト名= 192.168.56.207
    datadir =/usr/local/mysql/data

    [ndbd]
    ホスト名= 192.168.56.208
    datadir =/usr/local/mysql/data

    [mysqld]
    ホスト名= 192.168.56.206

ノード2-SQLノード

[mysqld]
datadir = /var/lib/mysql
port = 3306
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
ndbcluster

[mysql_cluster]
ndb-connectstring=192.168.56.205

ノード3とノード4-データノード

  • / usr/local/mysql/dataディレクトリを作成し、owner:groupをmysql:mysqlに割り当てます。
  • /etc/my.cnfを構成します。

    [mysqld] ndbcluster

    [mysql_cluster] ndb-connectstring = 192.168.56.205

起動

管理ノードで、次のコマンドを実行します。ndb_mgmd-f /var/lib/mysql-cluster/config.iniデータノード1 v 2、2で実行します。ndbd最後に、SQLノードで、mysqld_safe&

結果

ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.56.207)
id=3    @192.168.56.208  (mysql-5.6.19 ndb-7.3.6, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.56.205  (mysql-5.6.19 ndb-7.3.6)

[mysqld(API)]   1 node(s)
id=4 (not connected, accepting connect from any Host)

エラー:

ノード2:強制的なノードのシャットダウンが完了しました。開始フェーズ0中に発生します。シグナル11によって開始されます

ノード2の/ usr/local/mysql/dataにndb_2_error.logがあります

Ndb_2_error.logの内容:

Time: Monday 28 July 2014 - 09:45:01
Status: Temporary error, restart node
Message: WatchDog terminate, internal error or massive overload on the machine running this node (Internal error, programming error or missing error message, please report a bug)
Error: 6050
Error data: Job Handling
Error object: /export/home/pb2/build/sb_0-12598553-1404293345.9/rpm/BUILD/mysql-cluster-gpl-7.3.6/mysql-cluster-gpl-7.3.6/storage/ndb/src/kernel/vm/WatchDog.cpp
Program: ndbd
Pid: 1709
Version: mysql-5.6.19

3つのノードの警告:ノード2、ノード3、ノード4

2014-07-28 09:47:23 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 192.168.56.208. Returned error: 'No free node id found for mysqld(API).'
2014-07-28 09:47:23 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 192.168.56.207. Returned error: 'No free node id found for mysqld(API).'
2014-07-28 09:47:23 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 192.168.56.206. Returned error: 'No free node id found for mysqld(API).'

御時間ありがとうございます。

1
Luke Nguyen

あなたの設定を詳細に見ることなく、あなたの問題はカーネルがOut of memory(OOM)kill:ndbdなどのプロセスをkillしていることにあると思います。これらは通常/var/log/messagesに記録されるため、簡単に確認できます。

128MBのRAM、32ビット

これらの側面でNDBクラスターを実行できるかどうかは100%わかりませんが、実際には望まないと言えます。これが 多かれ少なかれNDBから期待できるメモリ消費量のガイド です。 NDBは最初の実行時にほとんどのメモリを事前に割り当てます。これはmemory-focusedトランザクションエンジンであることを忘れないでください。使用可能なRAMを増やすか、構成パラメーターの一部を減らします。

1
jynus