MySQL Cluster インストール
概要
仕事の関係で、MySQLをさわる機会があったので、インストール時のメモ
MySQLでクラスタを構成するためには、マネジメントノード 、データノード、SQLノード3種類が必要との事です。
- マネジメントノード ・・・ クラスタを管理するためのノード
- データノード ・・・ データを管理するマシン
- SQLノード ・・・ SQLを処理するノード
構成は以下となります。
構築作業は、KVM等の仮想環境で構築します。まずは一台をベースサーバとし、その内容を下記の3台にコピーします
+----------------------------------------------------------------- | HOSTNAME | IP ADDRESS | 役割 +----------------------------------------------------------------- | test_sql1-lab | 192.168.24.151 | データノード,SQLノード | test_sql2-lab | 192.168.24.152 | データノード,SQLノード | test_mgm-lab | 192.168.24.150 | マネジメントノード +-----------------------------------------------------------------
mysqlのインストール (マネジメントノード,SQLノード,データノード共通)
マネジメントノード,SQLノード,データノード共通で設定します。
MySQL インストール作業
(1)インストールに必要な関連パッケージのインストール
# yum install ncurses-devel
※上記をインストールしないと、configure 時に下記のエラーが表示されます
checking for termcap functions library… configure: error: No curses/termcap library found
(2)作業用ディレクトリに移動
# cd /usr/local/src/
(3)mysqlユーザーの追加
# groupadd mysql # useradd -g mysql mysql
(4)mysql ダウンロード
# wget http://download.softagency.net/MySQL/Downloads/MySQL-5.1/mysql-5.1.55.tar.gz # tar xvzf mysql-5.1.55.tar.gz # cd mysql-5.1.55 # ./configure --prefix=/usr/local/mysql --with-ndbcluster --with-partition # make # make install
※ configureオプション
- prefix=/usr/local/mysql
インストール場所に/usr/local/mysqlを指定 - with-ndbcluster
MySQL Clusterを有効 - with-partition
パーティショニングを有効
MySQL 設定
(1)設定ファイルをコピー
# cd /usr/local/src/mysql-5.1.55/support-files # cp -p my-medium.cnf /etc/my.cnf # diff my-medium.cnf /etc/my.cnf
(2)DBを初期化
# cd /usr/local/mysql # bin/mysql_install_db --user=mysql
(3)ユーザー権限を変更
# chown -R root:mysql . # chown -R mysql:mysql var
(4)SQLノードの起動(mysql)スクリプトを設定
# cd /usr/local/src/mysql-5.1.55/support-files/ # cp -p mysql.server /etc/init.d/mysqld # chmod 755 /etc/init.d/mysqld # diff mysql.server /etc/init.d/mysqld # chmod 755 /etc/init.d/mysqld # chkconfig --add mysqld # chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off # chkconfig mysqld off ※自動起動が設定しない、必要に応じであとで設定する
(5)rootユーザーのパスワード設定
# /etc/init.d/mysqld start # /usr/local/mysql/bin/mysql mysql> set password for root@localhost=password('root1234'); Query OK, 0 rows affected (0.00 sec) # /etc/init.d/mysqld stop
/etc/my.cnfの設定 (マネジメントノード,SQLノード,データノード共通)
マネジメントノード,SQLノード,データノード共通で設定します。
/etc/my.cnfの設定
- [mysqld]のndb-connectstringにマネジメントノードのIPアドレス指定する
- [mysql_cluster]のndb-connectstringにマネジメントノードのIPアドレス指定する
- [ndb_mgmd]のconfig-fileにマネジメントノードの設定ファイルを指定する
下記の設定ファイルは変更箇所のみ抜粋
# cp -p /etc/my.cnf /etc/my.cnf.org # vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.24.150 [mysql_cluster] ndb-connectstring=192.168.24.150 # diff /etc/my.cnf /etc/my.cnf.org 17c17 < HostName= 192.168.24.150 --- > HostName= localhost 21c21 < HostName= 192.168.24.151 --- > HostName= localhost 25c25 < HostName= 192.168.24.152 --- > HostName= localhost
管理ノード設定 (マネジメントノード)
この設定は、管理ノードのみ設定
(1)config.ini保存ディレクトリ作成
# mkdir /var/lib/ndb
(2)ndbのpid,ログファイルの保存ディレクトリ作成
# mkdir /var/lib/mysql-cluster
(3)サンプルの設定ファイルをコピー
# cd /usr/local/src/mysql-5.1.55/support-files # cp -p ndb-config-2-node.ini /var/lib/ndb/config.ini # cp -p /var/lib/ndb/config.ini /var/lib/ndb/config.ini.org
(4)config.iniを編集
※ 設定ファイルをそのまま出力しています
# vi /var/lib/ndb/config.ini [ndbd default] NoOfReplicas= 2 MaxNoOfConcurrentOperations= 10000 DataMemory= 80M IndexMemory= 24M TimeBetweenWatchDogCheck= 30000 DataDir= /var/lib/mysql-cluster MaxNoOfOrderedIndexes= 512 [ndb_mgmd default] DataDir= /var/lib/mysql-cluster [ndb_mgmd] Id=1 HostName= 192.168.24.150 [ndbd] Id= 2 HostName= 192.168.24.151 [ndbd] Id= 3 HostName= 192.168.24.152 [mysqld] Id= 4 HostName= 192.168.24.151 [mysqld] Id= 5 HostName= 192.168.24.152 [mysqld] Id= 6 [mysqld] Id= 7 # choose an unused port number # in this configuration 63132, 63133, and 63134 # will be used [tcp default] PortNumber= 63132
管理コンソールの起動 (マネジメントノード)
この設定は、管理ノードのみ設定
(1)管理コンソール(ndb_mgmd)を起動
# /usr/local/mysql/libexec/ndb_mgmd -f /var/lib/ndb/config.ini
※ -f で設定ファイルを指定
(2)起動しているかプロセス及びログで確認
# ps -ef|grep ndb_mgmd|grep -v grep root 2174 1 0 09:49 ? 00:00:00 /usr/local/mysql/libexec/ndb_mgmd -f /var/lib/ndb/config.ini # tail /var/lib/mysql-cluster/ndb_1_out.log NDB Cluster Management Server. Version 5.1.55 Id: 1, Command port: 1186 NDB Cluster Management Server. Version 5.1.55 Id: 1, Command port: 1186
(3)管理コンソールにログイン
今は、SQLノード、データノードを起動していないので「not connected」となる
# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> ; show Connected to Management Server at: 192.168.24.150:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 192.168.24.151) id=3 (not connected, accepting connect from 192.168.24.152) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.24.150 (Version: 5.1.55) [mysqld(API)] 4 node(s) id=4 (not connected, accepting connect from any host) 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)
データノードの起動 (データノード)
(1)データノードの起動
# /usr/local/mysql/libexec/ndbd --initial
※ 最初からはじめる場合か、管理サーバー上でconfig.iniを修正した場合のみ「–initial」のオプションを使用
(2)起動しているかプロセス及びログで確認
# ps -ef|grep ndbd|grep -v grep root 4404 1 0 20:55 ? 00:00:00 /usr/local/mysql/libexec/ndbd --initial root 4405 4404 1 20:55 ? 00:00:01 /usr/local/mysql/libexec/ndbd --initial # tail /var/lib/mysql-cluster/ndb_2_out.log RWPool::init(82, 13) RWPool::init(a2, 18) RWPool::init(c2, 13) RWPool::init(122, 18) RWPool::init(142, 15) WOPool::init(41, 8) RWPool::init(e2, 12) RWPool::init(102, 51) WOPool::init(21, 6) m_active_buckets.set(0)
(3)管理コンソール側でデータノードの状態を確認
[ndbd(NDB)] が接続されていることを確認、192.168.24.151がMaster側となっている
# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> ; show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.24.151 (Version: 5.1.55, Nodegroup: 0, Master) id=3 @192.168.24.152 (Version: 5.1.55, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.24.150 (Version: 5.1.55) [mysqld(API)] 4 node(s) id=4 (not connected, accepting connect from any host) 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)
SQLノードの起動 (SQLノード)
(1)データノードの起動
# /etc/init.d/mysqld start Starting MySQL. [ OK ]
(2)起動しているかプロセス及びログで確認
# ps -ef|grep mysql|grep -v grep root 4407 1 0 20:55 ? 00:00:00 /usr/local/mysql/libexec/ndbd --initial root 4408 4407 0 20:55 ? 00:00:07 /usr/local/mysql/libexec/ndbd --initial root 4472 1 0 21:05 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/ex-ms_sql2-lab.pid mysql 4581 4472 0 21:05 pts/0 00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/ex-ms_sql2-lab.err --pid-file=/usr/local/mysql/var/ex-ms_sql2-lab.pid --socket=/tmp/mysql.sock --port=3306
(3)管理コンソール側でデータノードの状態を確認
[mysqld(API)] が接続されていることを確認
# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> ; show Connected to Management Server at: 192.168.24.150:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.24.151 (Version: 5.1.55, Nodegroup: 0, Master) id=3 @192.168.24.152 (Version: 5.1.55, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.24.150 (Version: 5.1.55) [mysqld(API)] 4 node(s) id=4 @192.168.24.151 (Version: 5.1.55) id=5 @192.168.24.152 (Version: 5.1.55) id=6 (not connected, accepting connect from any host) id=7 (not connected, accepting connect from any host)
MySQL Cluster のコマンド
マネジメントノード
管理コンソールを起動
# /usr/local/mysql/libexec/ndb_mgmd -f /var/lib/ndb/config.ini # /usr/local/mysql/bin/ndb_mgm
コンソールにログイン
# /usr/local/mysql/bin/ndb_mgm
コンソールでの操作
ndb_mgm> show 状況確認 ndb_mgm> start ノードの開始 ndb_mgm> all start 全ノードの開始 ndb_mgm> shutdown 全ノードの停止とクラスタリングの停止(nbdb,ndb_mgmdプロセスもいなくなる)
データノードの起動 (データノード)
データノードの起動
# /usr/local/mysql/libexec/ndbd --initial or # /usr/local/mysql/libexec/ndbd
SQLノード
データノードの起動
# /etc/init.d/mysqld start
ディスカッション
コメント一覧
まだ、コメントがありません