直接自分の案件ではなかったが時間が空いたこともあり調べてほしいということで調べてみた。
MySQLは5.1.26を使用。
設定としては、
server1 : MGM
server2,server3 : data,SQLノード
#インストール
これはMySQLのcongifureに–with-ndbcluster」を追加してコンパイル・インストール
#設定
■server1
config.iniの作成
mkdir /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini
作成したconfig.iniに下記を記載
[NDBD DEFAULT]
NoOfReplicas=2
[NDB_MGMD]
id=1
hostname=server1のIPアドレス
datadir=/var/lib/mysql-cluster
[NDBD]
id=2
hostname=server2のIPアドレス
[NDBD]
id=3
hostname=server3のIPアドレス
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
■sever2/server3
/etc/my.cnfの設定(下記を追加)
[mysqld]
ndbcluster
ndb-connectstring=”server1のIPアドレス”
[mysql_cluster]
ndb-connectstring=”server1のIPアドレス”
# DATAノードの起動
server2 : /usr/local/mysql/libexec/ndbd –initial
(注)「–initial」は最初だけ指定
server3 : /usr/local/mysql/libexec/ndbd –initial –ndb-mgmd-host=server1のIPアドレス
(注)「–initial」は最初だけ指定。–ndb-mgmd-hostは両方のノードで指定しないとだめかも。
# MySQLノードの起動(MySQLの起動)
server2/server3 : /usr/local/mysql/bin/mysqld_safe &
# 管理ノードでチェック
server1で
/usr/local/mysql/bin/ndb_mgm
これで管理コンソールが開きます
「show」コマンドで状態の確認をする
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @server2のIPアドレス (Version: 5.1.26, Nodegroup: 0, Master)
id=3 @server3のIPアドレス (Version: 5.1.26, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @server1のIPアドレス (Version: 5.1.26)
[mysqld(API)] 4 node(s)
id=4 @server2のIPアドレス (Version: 5.1.26)
id=5 @server3のIPアドレス (Version: 5.1.26)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)
こんな感じで表示していたら成功
# テスト
server2とsever3で同じ名前のDBを作成
create database test_cl;
server2でテーブルを作る
create table test_table(id int, name varchar(255)) ENGINE=NDBCLUSTER
(注)clusterを使う場合は必ず「ENGINE=NDBCLUSTER」を指定する
server3でserver2で作ったテーブルができていれば良い。
後はINSERTなりUPDATEを実行しても片方のサーバーでも同期が取れていれば良い。
また、片方のSQLを落としてSQL文を実行させた後、落としたMySQLを起動してもデータの同期はとれてます。
ちなみにPHPからのアクセスはmysql_connectでdataノードのサーバーのIPアドレスを指定すればアクセスできます(もちろんデータの同期もできます)
感想としてはすぐに同期がとれるのでわざわざbatchなりcornでまわす必要がないので便利かなとおもう。
ただ、MySQLのリファレンスなどによると単純なテーブル構造や簡単な問い合わせ(SELECT)に向いているようなので、複雑な物はだめみたいですね。。。
参考書籍
インストール/設定するにあたり下記のページを参考にさせていただきました。ありがとうございます。
http://d.hatena.ne.jp/rx7/20070521/p1
http://d.hatena.ne.jp/rx7/20070602/p3
http://hogehoge.que.jp/thh4601/wiki/index.php?MySQLCluster(MultipleBoxConfig)
http://blog.k-go.org/archives/50342331.html