スタッフブログ

ローハイドのスタッフが、日常のこと、ネットで見つけた便利な情報、仕事に役立つとっておきのテクニックを紹介します。

Fight! the Rawhide

2007年4 月26日15:55

[MySQL5.1系]MySQL Cluster(NDB Cluster)の設定memo

STAFF BLOG

おーた

※.便宜上、クラスタリングに使用する2台のサーバを
「test1、test2」と記載しています。
これらのサーバ内で、既にmysql5.1系のインストールが
行われていることを前提とします。


1. データを入れておくディレクトリを作成します。(ここでは適当な場所につくってみます。)

***test1サーバ上にて***
shell# mkdir /home/hoge/ndb_mgmd-file
shell# mkdir /home/hoge/cluster-file

***test2サーバ上にて***
shell# mkdir /home/hoge2/cluster-file

2.mysqlルートに移動(test1,test2)

shell# cd /usr/local/mysql

3. my.cnfを設定します(test1,test2)

shell# cp support-files/my-large.cng /etc/my.cnf

shell# vi /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=hoge1

4. config.iniを設定します(test1)

shell# cp /support-files/ndb-config2-node.ini /support-files/config.ini

shell# vi /support-files/config.ini

[ndbd default]※変更箇所
NoOfReplicas= 2 → NoOfReplicas= 1
→レプリカ数です。1にすると冗長性を失いますが、
複数のサーバを1つのDBとして使えます。

DataDir → コメントアウト
→特に必要ないので・・

[ndb_mgmd_default]
DataDir → コメントアウト
HostName= hoge1
→マネージメントノードを起動するサーバのhost名

[ndb_mgmd]
id=1
DataDir= /home/hoge/ndb_mgmd-file
→マネージメントノードファイル置き場

HostName= hoge1
→マネージメントノードを動かすサーバのホスト名

[ndbd]
id=2
DataDir= /home/hoge/cluster-file
→データの置き場所のパス
HostName= hoge1
→データノードを動かすサーバのホスト名

[ndbd]※データノードの数分だけ[ndbd]を書きます。
id=3
DataDir= /home/hoge2/cluster-file
HostName= hoge2

[mysqld]※sqlノードの設定。デフォルトのままでOKです。
こいつもノードの数だけ書きます。

5. host名とIPアドレスを対応付けます。(test1,test2)

shell# vi /etc/hosts
192.168.0.x test1
192.168.0.y test2

6. マネージメントサーバ[ndb_mgmd]を起動します(test1)

shell# ./bin/ndb_mgmd –daemon –config-file ./support-files/config.ini
※引数でconfig.iniを指定しています。

7. 環境に応じてファイアウォールのポートを空けます。(test1,test2)

1)マネージメントノードを動かすサーバのポートを空けます。(1186.※test1のみ)

2)クラスタリングで使用するtcpのポートを空けます。(defaultだと63132、test1とtest2で設定)
→config.iniの[tcp_default]で変更可能

3)mysqlノードのポートを空けます。(defaultだと3306、test1とtest2で設定)

8.ndbdを起動します(test1,test2)

***test1で実行***
shell# ./bin/ndbd –initial(初回のみ–initialをつけます。)

***test2で実行***
shell# ./bin/ndbd –ndb-connectstring=test1 –initial

9.mysqldをSQLノードとして起動します(test1, test2)

shell# ./bin/mysqld_safe &
(my.cnfの設定が行われていれば
自動的にsqlノードとして認識されます。)


10.ndb_mgmを起動して状態を確認します(test1)

shell# ./bin/ndb_mgm
ndb_mgm> show
※クラスタリングの停止はshutdownコマンドで。すべてのノードが停止します。

成功例)
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.x  (Version: 5.1.17, Nodegroup: 0, Master)
id=3    @192.168.0.x  (Version: 5.1.16, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.x  (Version: 5.1.17)

[mysqld(API)]   4 node(s)
id=4    @192.168.0.x  (Version: 5.1.17)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)

このように、5.1系であればバージョンが異なっても
動作自体はします。
(実運用上はバグフィックス等々ある為
バージョンをあわせたほうが良さそう)

11.早速クラスタリングしてみましょう!!

shell# ./bin/mysql -uxx -p
mysql> CREATE DATABASE hoge_development default char set=utf8
mysql> CREATE TABLE hoges (
id INT(10) NOT NULL AUTO_INCREMENT
, name VARCHAR(255)
, PRIMARY KEY (id)
)ENGINE=NDB;
※クラスタリングを行っているとcreate table,
create database等のddlは遅くなります

mysql> show table status where Name = “hoges” and Engine=”NDBCLUSTER”;
※レコードが取得されればNDBClusterの設定は完了です。

それでは良いクラスタリングライフを。

o.t.a

コメントをどうぞ