MySQL clusterは「waku2とらふぃっくすHAクラスタ化プロジェクト」のひとつです。 PCエンジンデータベースをはじめ現在のデータベースはpostgreSQLで稼動していますが、これを機会に移行も行う予定です。 本日は、「MySQL Cluster(primary/primary)のインストール[データノード/SQLノードのインストール]」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。 本日は、「MySQL Cluster(primary/primary)のインストール[データノード/SQLノードのインストール]」についてです。
関連記事:
- MySQL Cluster(primary/primary)のインストールその1[管理ノードのインストール]
- MySQL Cluster(primary/primary)のインストールその2[データノード/SQLノードのインストール]
- MySQL Cluster(primary/primary)のインストールその3[データ同期の確認]
- MySQL Cluster(primary/primary)のインストールその4[起動・停止・管理]
- MySQL Cluster(primary/primary)のインストール[第一次インストール後調査メモ]
【中古】 Xen徹底入門 オープンソースで実現するOS仮想化環境 / 平 初, 長谷川 猛, 宮本 久仁男, 大島 孝子 / 翔泳社 [大型本]【メール..
貴重な情報ありがとうございます。深く感謝の意を表します。
参考:
管理ノード/SQLノード/データノードと必要になる。 ここでの構成は以下の通り。(xenが前提です。洒落のつもりはないです)
- (Domain-0)
mikeneko.waku2traffics.com
eth1
10.0.0.20
管理ノード - (Domain-U)
buchineko.waku2traffics.com
eth1
10.0.0.21
データノード/SQLノード - (Domain-0)
toraneko.waku2traffics.com
未使用
※いつか管理ノードを冗長化させたい - (Domain-U)
shironeko.waku2traffics.com
eth1
10.0.0.31
データノード/SQLノード
OS:CentOS5.2 x86_64版
データノード/SQLノードのインストール
対象は、
- buchineko.waku2traffics.com
- shironeko.waku2traffics.com
の2台。
CPANのインストールはしておく。
rootに戻っておく。
1 |
# su - |
perlモジュールのコンパイルに必要なgcc関連をインストール
1 2 3 4 |
# yum -y install gcc # yum -y install gcc-c++ # yum -y install libstdc++ # yum -y install libstdc++-devel |
perl(DBI)のインストール
1 |
# yum -y install perl-DBI |
RPMからのインストールなので、DL場所に移動(猫ITソリューションズの環境における場合)
1 |
# cd /usr/local/src |
最新版の確認。
http://dev.mysql.com/downloads/cluster/index.html#rhel5_amd64
Client のダウンロード
1 |
#wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.3/MySQL-Cluster-gpl-client-6.3.20-0.rhel5.x86_64.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/ |
Cluster storage engine のダウンロード
1 |
#wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.3/MySQL-Cluster-gpl-storage-6.3.20-0.rhel5.x86_64.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/ |
Server のダウンロード
1 |
#wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.3/MySQL-Cluster-gpl-server-6.3.20-0.rhel5.x86_64.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/ |
ダウンロードファイルの確認
1 2 3 4 5 6 7 8 |
# ls -al total 30348 drwxr-xr-x 2 root root 4096 Jan 4 18:22 . drwxr-xr-x 12 root root 4096 Jan 1 15:26 .. -rw-r--r-- 1 root root 62863 Feb 8 2005 cpan2rpm-2.027-1.noarch.rpm -rw-r--r-- 1 root root 7604229 Dec 17 04:15 MySQL-Cluster-gpl-client-6.3.20-0.rhel5.x86_64.rpm -rw-r--r-- 1 root root 21442984 Dec 17 04:19 MySQL-Cluster-gpl-server-6.3.20-0.rhel5.x86_64.rpm -rw-r--r-- 1 root root 1872284 Dec 17 04:20 MySQL-Cluster-gpl-storage-6.3.20-0.rhel5.x86_64.rpm |
Client のインストール
1 |
# rpm -ivh MySQL-Cluster-gpl-client-6.3.20-0.rhel5.x86_64.rpm |
Cluster storage engine のインストール
1 |
# rpm -ivh MySQL-Cluster-gpl-storage-6.3.20-0.rhel5.x86_64.rpm |
Server のインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# rpm -ivh MySQL-Cluster-gpl-server-6.3.20-0.rhel5.x86_64.rpm PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h buchineko.waku2traffics.com password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available at http://www.mysql.com/ Support MySQL by buying support/licenses from http://shop.mysql.com/ |
MySQL起動
1 |
# /etc/init.d/mysql start |
rootパスワード設定
1 |
#/usr/bin/mysqladmin -u root password 'xxxxxxxx' |
mysqlグループ&ユーザ作成&パス追加
1 2 3 4 5 6 7 8 9 |
# groupadd mysql # useradd -g mysql mysql # passwd mysql Changing password for user mysql. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. # export PATH=$PATH:/usr/bin # export PATH=$PATH:/usr/sbin |
ディレクトリ所有者変更
1 2 |
# chgrp -R mysql /var/lib/mysql-cluster # chown -R mysql /var/lib/mysql-cluster |
MySQL特権テーブルの作成
1 |
# /usr/bin/mysql_install_db --user=mysql |
設定ファイルの作成。
ひな形はrpmで提供されているので、これを /etc/ 以下にコピーして、NDB Clusterに必要な設定を追加する。
1 2 3 4 5 6 7 8 9 10 |
# cp /usr/share/doc/MySQL-Cluster-gpl-server-6.3.20/my-large.cnf /etc/my.cnf # vi /etc/my.cnf 追加するのは以下の内容 [mysqld]セクション内に以下の2行 ndbcluster ndb-connectstring = 10.0.0.20 ファイル末尾に [mysql_cluster] セクションを追加して1行。 [mysql_cluster] ndb-connectstring = 10.0.0.20 #nostart |
ファイアーウォールの設定 受信を許可する「その他のポート」に「63132:tcp mysql:tcp」と書きます。
1 |
/usr/sbin/lokkit |
http://blogs.ricollab.jp/webtech/2008/07/mysql_ndb_cluster/
また、これだけだと mysql が管理ノードにアクセスしに行くときに selinux に引っかかってエラーになるのですが、 そのエラーをわざと一度起こして許可ルールを作るためのログを吐かせます。 もし、/var/log/audit というディレクトリが存在しない場合、audit をインストールしておいてください。
1 2 3 4 5 |
% sudo yum install audit % sudo /etc/init.d/auditd start% sudo /etc/init.d/mysql start % sudo grep denied /var/log/audit/audit.log |
これで、
1 2 |
type=AVC msg=audit(1216111039.402:59893): avc: denied { name_connect } for pid=29878 comm="mys qld" dest=32960 scontext=user_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket |
というような行が見つかればOKです。(適当に改行してありますが、本当は一行です。)
mysql はこのまま起動に失敗してプロセスが残ったままになってしまうので、ちゃんとプロセスを kill しておいてください。
次にこのログから許可ルールを作成します。
1 2 3 4 |
# sudo audit2allow -a -M mysqlcluster ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i mysqlcluster.pp |
すると mysqlcluster.pp というファイルが生成されるのでこれをselinuxに取り込ませます。
1 |
% sudo /usr/sbin/semodule -i mysqlcluster.pp |
ただ、これだとmysqlがネットワークにアクセスするのを全て許可してしまうので、 宛先やポートを指定して許可したい場合には適切な te ファイルを作成して設定してください。 ちなみに、srv2 でこの pp ファイルを作れば、srv3 ではログを吐かせるあたりは省略して pp ファイルをコピーして読みこませるだけでOKです。
--------------------------------
各ノード起動
管理ノードの起動
mikenekoで行う。
1 |
# ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini |
マネジメントクライアントの起動
1 2 |
# ndb_mgm -c 10.0.0.20 -- NDB Cluster -- Management Client -- |
データノードの「半」起動
buchineko/shironekoで行う。
・初回、または管理サーバー上でconfig.iniを修正した場合のみ「--initial」のオプションを使用
1 |
# ndbd --initial --ndb-connectstring=10.0.0.20 --nostart |
・次回以降
1 |
# ndbd --connect-string=10.0.0.20 --nostart |
SQLノードの起動
buchineko/shironekoで行う。
念のため、MySQLに関するプロセスが起動していないか確認。 あったら停止しておく。
1 |
# ps aux | grep mysql |
起動
1 |
# /usr/share/mysql/mysql.server start |
データノードの「本」起動&マネジメントクライアントによる接続の確認
mikeneko.waku2traffics.comの管理ノードから起動&確認してみる。 コマンドの詳細は以下より
http://dev.mysql.com/doc/refman/5.1/ja/mysql-cluster-mgm-client-commands.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
ndb_mgm> show Connected to Management Server at: 10.0.0.20:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=11 (not connected, accepting connect from 10.0.0.21) id=12 (not connected, accepting connect from 10.0.0.31) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.0.0.20 (mysql-5.1.30 ndb-6.3.20) [mysqld(API)] 2 node(s) id=13 (not connected, accepting connect from any host) id=14 (not connected, accepting connect from any host) ndb_mgm> ALL STATUS Node 11: not started (mysql-5.1.30 ndb-6.3.20) Node 12: not started (mysql-5.1.30 ndb-6.3.20) ndb_mgm> ALL START ←これでデータノードを「本」起動 NDB Cluster is being started. NDB Cluster is being started. Node 11: Start initiated (version 6.3.20) Node 12: Start initiated (version 6.3.20) Node 11: Started (version 6.3.20) Node 12: Started (version 6.3.20) Node 11: started (mysql-5.1.30 ndb-6.3.20) Node 12: started (mysql-5.1.30 ndb-6.3.20) ndb_mgm> ALL STATUS Node 11: started (mysql-5.1.30 ndb-6.3.20) Node 12: started (mysql-5.1.30 ndb-6.3.20) |
マネジメントクライアントから抜ける。ただ抜けるだけで何も停止はしない。
1 |
ndb_mgm> exit |
次回は、データ同期の確認です。