Home > MySQL | 環境構築 > MySQLClusterを試す~MySQLCluster構築結果の確認~

MySQLClusterを試す~MySQLCluster構築結果の確認~

さて、ここまでの構築で、以下のような環境ができていると思います。

今回は、上記の構成になっていることを前提に、MySQL Clusterの操作と動作について確認します。

最初に、基本的な動作について確認します。

MySQL Clusterというぐらいですから、クラスタ化されたノード間で
情報が正しく共有されていることを確認する必要があります。

なお、本作業を行うにあたり、MySQLDノード(1)および(2)に対して、
外部から接続可能なユーザをあらかじめ作成してください。
例えば以下のようにして作成します。

  • ユーザの作成

1
2
GRANT ALL PRIVILEGES ON *.* TO myadmin@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO myadmin@"10.1.100.%" IDENTIFIED BY 'password' WITH GRANT OPTION;

  • 外部からの接続

1
mysql -h 10.1.100.140 -u myadmin -p


まずは、試しにMySQLDノード(1)にデータベースを作成した場合の動作について確認します。
その前にそれぞれのMySQLDノードの作成済みデータベースを確認します。

>show databases;

初期状態ではいずれのノードも「information_schema」「mysql」「test」の3つが存在しています。
ここで、MySQLDノード(1)に対して新しくデータベースの作成を行ってみます。

>create database sample1;

この状態で、データベースの作成状況を確認します。
下図の左がMySQLDノード(1)で、右がMySQLDノード(2)の確認結果です。

どうでしょうか?
無事MySQLDノード(1)で作成されたデータベースがMySQLDノード(2)側にも作成されています。

以前のバージョンでは、データベースの作成等一部の操作は
それぞれのノードで行う必要がありましたが、5.1ではその点も改善されています。

基本的に正常な状態であれば、いずれのノードに対する操作も共有されます。
では、逆にいずれかのノードに障害が発生した場合どうなるのでしょうか?
試しに、MySQLDノード(2)のネットワークを切断してみます。

MySQLDノード(2)はXenのDomainU上に構築していますので、
ケーブルをちょっと抜いてみるわけにもいきませんので。
ここでは、Domain0からコンソールで入り、eth0を落としてみたいと思います。

>ifconfig eth0 down

MySQLDノード(2)のネットワークを落とした状態で、MGMノード上でのステータスを確認します。

MGMノード上でもMySQLDノード(2):id=5が「not connected」になっていることがわかります。

さて、この状態でMySQLDノード(1)に対して行われた操作は、
MySQLDノード(2)が復帰したときにどうなるのでしょうか?

この状態でまずはMySQLDノード(1)上で新たにデータベースを作成します。

>create database sample2;

左がMySQLDノード(1)、右がMySQLDノード(2)の状況です。
※MySQLDノード(2)は外部から接続ができないので、ローカルから接続して確認しています

当然といえばそれまでですが、MySQLDノード(2)には新しいデータベースが作成されていません。
さて、この状況でMySQLDノード(2)のネットワークを復旧させるとどうなるのでしょうか?

答えは、MySQLDノード(2)には「sample2」は作成されません。

次に「create tabale」についても確認します。
MGMノード上で全てのノードが正常に接続されている状態であることを確認した上で、
MySQLDノード(1)に対してデータベース「sample3」を作成し、
その中にさらに「sample_tbl1」テーブルを作成します。

>create database sample3;
>use sample3
>create table sample_tbl1 ( id varchar(5), name varchar(50)) engine = ndb;

左がMySQLDノード(1)、右がMySQLDノード(2)の結果です。
ここでは問題なくMySQLDノード(1)に対して行った操作の結果が、
MySQLDノード(2)に対しても反映されています。

さて、この状態で再度MySQLDノード(2)のネットワークを切断し、
その状況でMySQLDノード(1)に対してテーブル作成を行った場合
その結果はどのようになるのでしょうか?

まずは、MySQLDノード(2)のeth0をダウンさせます。

>ifconfig eth0 down

次に、MySQLDノード(1)に対して「sample_tbl1」テーブルの作成を行います。

>create table sample_tbl2 ( id varchar(5), name varchar(50)) engine = ndb;

左のMySQLDノード(1)では、正常に「sample_tbl2」テーブルが作成されていますが、
右のMySQLDノード(2)では、「sample_tbl2」テーブルが作成されていません。

ここまでは、「create database」を行ったときと同じ結果になりました。
では、この状態でMySQLDノード(2)のネットワークを復旧させた場合どうなるのでしょうか?

>ifconfig eth0 up

MGMノード上でMySQLDノード(2)が復帰したことを確認して再度「show tables」を行います。

さて、皆さんの想像通りだったでしょうか?
「create database」では、MySQLDノードが障害から復旧しても
その間に作成されたデータベースは複製されませんのでしたが、
「create table」については、無事複製されています。

もう一つテストしてみましょう。
今回は障害中にデータベースが作成され、且つ、そこにテーブルが作成された場合、
MySQL Clusterはどのような動作をするのでしょうか。
MySQLDノード(2)のネットワークを切断した状態で、
MySQLDノード(1)に対してデータベース「sample4」を作成し、
その中に「sample_tbl3」を作成してみます。

>create database sample4;
>use sample4
>create table sample_tbl3 ( id varchar(5), name varchar(50)) engine = ndb;

まずは、ネットワークが切断された状態での、それぞれのノードの状態です。
※左側がMySQLDノード(1)、右側がMySQLDノード(2)の状態です。

ネットワークが切断された状態では、MySQLDノード(2)には
当然ですがデータベース「sample4」は作成されません。

では、この状態からネットワークを接続し、MySQLDノード(2)を
MySQL Clusterに復帰させるとどのような動作をするのでしょうか。
MySQLDノード(2)の状態を確認してみたいと思います。

ネットワークが復旧して、MGMノード上でもMySQL Clusterに復帰していますが、
やはりデータベース「sample4」は作成されていません。
この状態でMySQLDノード(2)に「sample4」を作成するとどうなるのでしょうか?
ちょっと実験してみましょう。

上記結果を見ていただければわかると思いますが、
MySQLDノード(2)ではデータベース「sample4」の作成しか行ってはいません。
しかし、データベース「sample4」を作成すると同時に「sample_tbl3」も作成されています。

どうでしょうか、MySQLDノードに障害が発生した場合の
MySQL Clusterの動作について特徴がつめましたか?

今回は、MySQLDノードについてのみ検証してみました。

実際にはMGMノードの障害や、NDBDノードの障害等、
構成要素としては他にも障害が発生するケースや、
また、障害時のデータの一貫性の保持等確認すべき内容はありますが、
今回はMySQL Clusterというものについて、
まずは実際に構築してみて、そしてその動作について触ってみるということで、
ここまでの説明にしたいと思います。

また、時間があればその他のケースや、
各種管理についての説明等行いたいと思います。

お疲れ様でした。

Comments:0

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.technology-knowledge.jp/2008/04/17/126/trackback/
Listed below are links to weblogs that reference
MySQLClusterを試す~MySQLCluster構築結果の確認~ from SeeIn開発日誌

Home > MySQL | 環境構築 > MySQLClusterを試す~MySQLCluster構築結果の確認~

ブログ内検索
各種フィード
Meta

Page Top

このページの先頭へ