この記事は、2 台のサーバーに基づいて MySQL クラスターをインストールおよび構成する方法を紹介することを目的としています。また、サーバーに問題が発生したりダウンしたりしても、MySQL は引き続き実行できることを理解してください。
知らせ!これは 2 台のサーバーをベースとする MySQL クラスターですが、管理ノードとして追加の 3 台目のサーバーが必要ですが、このサーバーはクラスターの起動完了後にシャットダウンできます。また、クラスタ起動完了後に管理ノードとなるサーバをシャットダウンすることは推奨されませんのでご注意ください。理論的には 2 台のサーバーのみで MySQL クラスターを構築することも可能ですが、そのようなアーキテクチャでは、1 台のサーバーがダウンするとクラスターは正常に動作し続けることができなくなり、クラスターの意味が失われます。このため、3 番目のサーバーを管理ノードとして実行する必要があります。さらに、多くの友人は 3 つのサーバーの実際の環境を持っていない可能性があるため、VMWare または他の仮想マシンで実験を行うことを検討するかもしれません。
以下は、これら 3 つのサービスの状況を想定しています。
サーバー1: mysql1.vmtest.net 192.168.0.1
サーバー2: mysql2.vmtest.net 192.168.0.2
サーバー3: mysql3.vmtest.net 192.168.0.3
Server1 と Server2 は実際に MySQL クラスターを構成するサーバーになります。管理ノードとしての Server3 の要件は低く、Server3 システムに必要な調整はわずかであり、MySQL をインストールする必要はありません。Server3 は、より低い構成のコンピュータを使用して、Server3 上で他のサービスを同時に実行できます。 2. MySQL を Server1 と Server2 にインストールする
=================================[url]/u/info_img/2009-05/30/url よりmysql-max-4.1.9-pc-linux-gnu-i686.tar.gz をダウンロードします。 注: これは MySQL の最大バージョンである必要があります。標準バージョンはクラスターの展開をサポートしません。次の手順は、Server1 と Server2 で 1 回実行する必要があります。
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# groupaddmysql
# 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
#cdmysql
# scripts/mysql_install_db --user=mysql
# chown -R root 。
# chown -R mysql データ
#chgrp -R mysql 。
# cp サポートファイル/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld この時点では MySQL を起動しないでください。
管理ノードサーバー (Server3) のインストールと構成
===================================== 管理ノードサーバーとして、Server3 には ndb_mgm と 2 つのファイルが必要です。 ndb_mgmd : [url]/u/info_img/2009-05/30/url] から mysql-max-4.1.9-pc-linux-gnu-i686.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 デフォルト]
レプリカ数=2
[MYSQLDのデフォルト]
[NDB_MGMD デフォルト]
[TCPデフォルト]
#ManagementServer
[NDB_MGMD]
HostName=192.168.0.3 #管理ノードサーバー Server3 の IP アドレス
ストレージ エンジンの数
[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] 保存して終了した後、管理ノード サーバー Server3 を起動します。
# ndb_mgmd で管理ノードを起動した後、これは管理ノードのサービスのみであり、管理端末ではないことに注意してください。したがって、起動に関する出力情報は表示されません。 4. クラスターサーバーを構成し、MySQL を起動します。
============================= Server1 と Server2 の両方で次の変更を行う必要があります。
# 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 /etc/rc.local に /usr/local/mysql/bin/ndbd を追加して起動できます。注: --initial パラメータを使用する必要があるのは、ndbd を初めて起動するとき、または Server3 の config.ini に変更を加えた後だけです。 5. 動作状況の確認
================ 管理ノードサーバー Server3 に戻り、管理端末を起動します。
# /usr/bin/ndb_mgm show コマンドを入力して、現在の動作ステータスを表示します (以下はステータス出力の例です)。
[root@mysql3 root]# /usr/bin/ndb_mgm
-- MySQL Cluster -- 管理クライアント --
ndb_mgm> ショー
管理サーバーに接続しています: localhost:1186
クラスタ構成
------------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.1 (バージョン: 4.1.9、ノードグループ: 0、マスター)
id=3 @192.168.0.2 (バージョン: 4.1.9、ノードグループ: 0)
[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.3 (バージョン: 4.1.9)
[mysqld(API)] 2 ノード
id=4 (バージョン: 4.1.9)
id=5 (バージョン: 4.1.9)
ndb_mgm>
上記の問題がない場合は、今すぐ MySQL のテストを開始してください。このドキュメントでは MySQL の root パスワードを設定しないことに注意してください。Server1 と Server2 の MySQL root パスワードは自分で設定することをお勧めします。サーバー1:
# /usr/local/mysql/bin/mysql -u root -p
> テストを使用します。
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> ctest () 値に挿入 (1);
> SELECT * FROM ctest; 1 行の返された情報 (戻り値 1) が表示されるはずです。上記が正常な場合は、Server2 に切り替えて上記のテストを繰り返し、効果を観察します。成功した場合は、Server2 で INSERT を実行し、Server1 に戻って正常に動作するかどうかを確認します。問題がなければ、成功おめでとうございます。 6. 破壊試験
============== Server1 または Server2 のネットワーク ケーブルを取り外し、他のクラスタ サーバーが正常に動作しているかどうかを観察します (SELECT クエリを使用してテストできます)。テストが完了したら、ネットワーク ケーブルを再度挿入します。物理サーバーにアクセスできない場合、つまりネットワーク ケーブルを取り外すことができない場合は、次のようにテストすることもできます。 Server1 または Server2:
# ps aux | ndbd はすべての ndbd プロセス情報を表示します。
ルート 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
ルート 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 ndbd を grep し、ndbd プロセスを強制終了して MySQL クラスター サーバーを破棄します。
# kill -9 5578 5579 の後は、別のクラスター サーバーで SELECT クエリを使用してテストします。また、管理ノードサーバの管理端末でshowコマンドを実行すると、破損したサーバの状態が表示されます。テストが完了したら、損傷したサーバーの ndbd プロセスを再起動するだけです。
#ndbd注意!前述したように、現時点では --initial パラメータを追加する必要はありません。この時点で、MySQL クラスターの構成は完了です。