MySQL設定 · 1 min read · Oct 02, 2025
負荷分散されたMySQLクラスタの設定方法
負荷分散されたMySQLクラスタの設定方法
バージョン 1.0
著者: Falko Timme
このチュートリアルでは、2つのストレージノードと1つの管理ノードを持つMySQL 5クラスタの設定方法を示します。このクラスタは、高可用性のロードバランサーによって負荷分散されており、実際にはUltra Monkeyパッケージを使用する2つのノードがあります。このパッケージは、ハートビート(他のノードがまだ生きているかどうかを確認するため)とldirectord(MySQLクラスタのノードへのリクエストを分割するため)を提供します。
この文書では、すべてのノードにDebian Sargeを使用します。したがって、他のディストリビューションでは設定が少し異なる場合があります。この設定で使用するMySQLのバージョンは5.0.19です。MySQL 5を使用したくない場合は、MySQL 4.1も使用できますが、私はそれをテストしていません。
このハウツーは実用的なガイドとして意図されています。理論的な背景はカバーしていません。それらはウェブ上の他の多くの文書で扱われています。
この文書にはいかなる種類の保証もありません!これは、このようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能するという保証はありません!
1 私のサーバー
私は、すべて同じネットワーク(この例では192.168.0.x)にある以下のDebianサーバーを使用しています:
- sql1.example.com: 192.168.0.101 MySQLクラスタノード1
- sql2.example.com: 192.168.0.102 MySQLクラスタノード2
- loadb1.example.com: 192.168.0.103 ロードバランサー1 / MySQLクラスタ管理サーバー
- loadb2.example.com: 192.168.0.104 ロードバランサー2
さらに、仮想IPアドレスが必要です:192.168.0.105。これは、アプリケーションがクラスタにアクセスするための単一のIPアドレスを持つように、ロードバランサーによってMySQLクラスタに割り当てられます。
私たちはMySQLクラスタに2つのMySQLクラスタノードを持ちたいと思っていますが、主に1つの理由から、3番目のノード、MySQLクラスタ管理サーバーが必要です:2つのMySQLクラスタノードのいずれかが失敗し、管理サーバーが動作していない場合、2つのクラスタノードのデータは不整合になります(「スプリットブレイン」)。また、MySQLクラスタの設定にも必要です。
したがって、通常は次の5台のマシンが必要です:
2 MySQLクラスタノード + 1クラスタ管理サーバー + 2ロードバランサー = 5MySQLクラスタ管理サーバーは多くのリソースを使用しないため、システムは何もせずにそこに座っているだけになるので、最初のロードバランサーを同じマシンに置くことができ、1台のマシンを節約できるため、最終的に4台のマシンになります。
2 MySQLクラスタ管理サーバーの設定
まず、MySQL 5.0.19(maxバージョン!)をダウンロードし、クラスタ管理サーバー(ndb_mgmd)とクラスタ管理クライアント(ndb_mgm - クラスタ内で何が起こっているかを監視するために使用できます)をインストールする必要があります。次の手順はloadb1.example.com(192.168.0.103)で実行されます:
loadb1.example.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\ glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm
次に、クラスタ構成ファイル/var/lib/mysql-cluster/config.iniを作成する必要があります:
loadb1.example.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # クラスタ管理ノードのセクション [NDB_MGMD] # 管理ノードのIPアドレス(このシステム) HostName=192.168.0.103 # ストレージノードのセクション [NDBD] # 最初のストレージノードのIPアドレス HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # 2番目のストレージノードのIPアドレス HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # ストレージノードごとに1つの[MYSQLD] [MYSQLD] [MYSQLD] |
ファイル内のIPアドレスを適切に置き換えてください。
次に、クラスタ管理サーバーを起動します:
loadb1.example.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini 管理サーバーをシステム起動時に自動的に起動することが理にかなっているので、非常にシンプルなinitスクリプトと適切なスタートアップリンクを作成します:
loadb1.example.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。