MySQL-Clusterクラスタ研究
一、紹介
このドキュメントでは、2台のサーバベースのMySQLクラスタを構成する方法について説明します.また、いずれかのサーバで問題が発生したり、ダウンタイムが発生したりした場合でも、MySQLは引き続き実行できます.
注意!
これは2台のサーバベースのMySQLクラスタですが、管理ノードとして追加の3台目のサーバが必要ですが、このサーバはクラスタの起動が完了した後に閉じることができます.また、クラスタの起動が完了した後に管理ノードとしてのサーバを閉じることは推奨されないことに注意してください.理論的には2台のサーバのみに基づくMySQLクラスタを構築できるが、このようなアーキテクチャは、1台のサーバがダウンタイムするとクラスタが正常に動作しなくなり、クラスタの意味を失う.このため,管理ノードとして3台目のサーバが実行される必要がある.
また,3台のサーバの実環境を持たない友人も多いかもしれないが,VMWareや他の仮想マシンでの実験も考えられる.
この3つのサービスを想定します.
サーバs 1およびサーバ2は、MySQLクラスタを実際に構成するサーバとして機能します.管理ノードとしてのサーバ3については、サーバ3のシステムを小さく調整し、MySQLをインストールする必要がなく、サーバ3は構成の低いコンピュータを使用し、サーバ3で他のサービスを同時に実行することができます.
二、サーバー1とサーバー2にMySQLをインストールする
http://www.mysql.com上ダウンロードmysql-max-4.1.9-pc-linux-gnu-i 686.tar.gzから
注意:maxバージョンのMySQLでなければなりません.Standardバージョンではクラスタ導入はサポートされていません.
次の手順では、サーバ1とサーバ2を1回ずつ行う必要があります.
MySQLを起動しないでください.
三、管理ノードサーバーのインストールと構成(Server 3)
管理ノードサーバとして、サーバ3にはndb_が必要です.mgmとndb_mgmdの2つのファイル:
http://www.mysql.com上ダウンロードmysql-max-4.1.9-pc-linux-gnu-i 686.tar.gzから
この管理ノード・サーバのプロファイルの作成を開始します.
config.iniには以下の内容が追加されています.
保存終了後、管理ノードサーバサーバサーバサーバ3を起動します.
管理ノードを起動したら、これは管理ノードサービスにすぎず、管理端末ではないことに注意してください.したがって、起動後の出力情報は表示されません.
四、クラスタサーバーを構成し、MySQLを起動する
サーバ1とサーバ2では、以下の変更が必要です.
保存終了後、データディレクトリを作成してMySQLを起動します.
/usr/local/mysql/bin/ndbdを/etc/rcに加えることができる.localで起動を実現します.
注意:ndbdが最初に起動する場合またはサーバ3のconfigのみ.iniを変更してから--initialパラメータを使用する必要があります!
五、作業状態を検査する
管理ノードサーバServer 3に戻り、管理端末を起動します.
showコマンドを入力して現在の動作状態を表示します:(次はステータス出力の例です)
問題がない場合は、MySQLのテストを開始します.
なお、このドキュメントではMySQLにrootパスワードは設定されていません.サーバ1とサーバ2のMySQL rootパスワードを自分で設定することをお勧めします.
サーバ1で:
1 row returned情報(数値1を返す)が表示されるはずです.
上記が正常であれば、サーバ2に移行して上記のテストを繰り返し、効果を観察します.成功した場合は、INSERTを実行してサーバ2に戻り、正常に動作しているかどうかを確認します.
問題がなければ、成功おめでとうございます.
六、破壊性テスト
サーバ1またはサーバ2のネットワークケーブルを抜いて、別のクラスタサーバが正常に動作しているかどうかを確認します(SELECTクエリーテストを使用できます).テストが終わったら、ネットワークケーブルを再挿入すればいいです.
物理サーバに接続できない場合、つまりネットワークケーブルを抜くことができない場合は、サーバ1またはサーバ2でテストすることもできます.
すべてのndbdプロセス情報が表示されます.
その後、ndbdプロセスを殺してMySQLクラスタサーバを破壊する目的を達成します.
その後、別のクラスタサーバでSELECTクエリーテストを使用します.また、管理ノードサーバの管理端末でshowコマンドを実行すると、破壊されたサーバの状態が表示されます.
テストが完了したら、破壊されたサーバのndbdプロセスを再起動するだけです.
注意!前に言ったように、この時は--initalパラメータを追加する必要はありません!
これでMySQLクラスタの構成が完了しました!
このドキュメントでは、2台のサーバベースのMySQLクラスタを構成する方法について説明します.また、いずれかのサーバで問題が発生したり、ダウンタイムが発生したりした場合でも、MySQLは引き続き実行できます.
注意!
これは2台のサーバベースのMySQLクラスタですが、管理ノードとして追加の3台目のサーバが必要ですが、このサーバはクラスタの起動が完了した後に閉じることができます.また、クラスタの起動が完了した後に管理ノードとしてのサーバを閉じることは推奨されないことに注意してください.理論的には2台のサーバのみに基づくMySQLクラスタを構築できるが、このようなアーキテクチャは、1台のサーバがダウンタイムするとクラスタが正常に動作しなくなり、クラスタの意味を失う.このため,管理ノードとして3台目のサーバが実行される必要がある.
また,3台のサーバの実環境を持たない友人も多いかもしれないが,VMWareや他の仮想マシンでの実験も考えられる.
この3つのサービスを想定します.
Server1: mysql1.vmtest.net 192.168.0.1
Server2: mysql2.vmtest.net 192.168.0.2
Server3: mysql3.vmtest.net 192.168.0.3
サーバs 1およびサーバ2は、MySQLクラスタを実際に構成するサーバとして機能します.管理ノードとしてのサーバ3については、サーバ3のシステムを小さく調整し、MySQLをインストールする必要がなく、サーバ3は構成の低いコンピュータを使用し、サーバ3で他のサービスを同時に実行することができます.
二、サーバー1とサーバー2にMySQLをインストールする
http://www.mysql.com上ダウンロードmysql-max-4.1.9-pc-linux-gnu-i 686.tar.gzから
注意:maxバージョンのMySQLでなければなりません.Standardバージョンではクラスタ導入はサポートされていません.
次の手順では、サーバ1とサーバ2を1回ずつ行う必要があります.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
MySQLを起動しないでください.
三、管理ノードサーバーのインストールと構成(Server 3)
管理ノードサーバとして、サーバ3にはndb_が必要です.mgmとndb_mgmdの2つのファイル:
http://www.mysql.com上ダウンロードmysql-max-4.1.9-pc-linux-gnu-i 686.tar.gzから
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
# cd
# rm -rf /usr/src/mysql-mgm
この管理ノード・サーバのプロファイルの作成を開始します.
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
config.iniには以下の内容が追加されています.
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.0.3 # Server3 IP
# Storage Engines
[NDBD]
HostName=192.168.0.1 #MySQL Server1 IP
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #MySQL Server2 IP
DataDir=/var/lib/mysql-cluster
# 2 [MYSQLD] Server1 Server2 。
# , , 。
[MYSQLD]
[MYSQLD]
保存終了後、管理ノードサーバサーバサーバサーバ3を起動します.
# ndb_mgmd
管理ノードを起動したら、これは管理ノードサービスにすぎず、管理端末ではないことに注意してください.したがって、起動後の出力情報は表示されません.
四、クラスタサーバーを構成し、MySQLを起動する
サーバ1とサーバ2では、以下の変更が必要です.
# vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 #Server3 IP
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Server3 IP
保存終了後、データディレクトリを作成してMySQLを起動します.
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial
# /etc/rc.d/init.d/mysqld start
/usr/local/mysql/bin/ndbdを/etc/rcに加えることができる.localで起動を実現します.
注意:ndbdが最初に起動する場合またはサーバ3のconfigのみ.iniを変更してから--initialパラメータを使用する必要があります!
五、作業状態を検査する
管理ノードサーバServer 3に戻り、管理端末を起動します.
# /usr/bin/ndb_mgm
showコマンドを入力して現在の動作状態を表示します:(次はステータス出力の例です)
[root@mysql3 root]# /usr/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.3 (Version: 4.1.9)
[mysqld(API)] 2 node(s)
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)
ndb_mgm>
問題がない場合は、MySQLのテストを開始します.
なお、このドキュメントではMySQLにrootパスワードは設定されていません.サーバ1とサーバ2のMySQL rootパスワードを自分で設定することをお勧めします.
サーバ1で:
# /usr/local/mysql/bin/mysql -u root -p
> use test;
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
1 row returned情報(数値1を返す)が表示されるはずです.
上記が正常であれば、サーバ2に移行して上記のテストを繰り返し、効果を観察します.成功した場合は、INSERTを実行してサーバ2に戻り、正常に動作しているかどうかを確認します.
問題がなければ、成功おめでとうございます.
六、破壊性テスト
サーバ1またはサーバ2のネットワークケーブルを抜いて、別のクラスタサーバが正常に動作しているかどうかを確認します(SELECTクエリーテストを使用できます).テストが終わったら、ネットワークケーブルを再挿入すればいいです.
物理サーバに接続できない場合、つまりネットワークケーブルを抜くことができない場合は、サーバ1またはサーバ2でテストすることもできます.
# ps aux | grep ndbd
すべてのndbdプロセス情報が表示されます.
root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd
その後、ndbdプロセスを殺してMySQLクラスタサーバを破壊する目的を達成します.
# kill -9 5578 5579
その後、別のクラスタサーバでSELECTクエリーテストを使用します.また、管理ノードサーバの管理端末でshowコマンドを実行すると、破壊されたサーバの状態が表示されます.
テストが完了したら、破壊されたサーバのndbdプロセスを再起動するだけです.
# ndbd
注意!前に言ったように、この時は--initalパラメータを追加する必要はありません!
これでMySQLクラスタの構成が完了しました!