exit EOF
3.4.3.2. MySQL モニタリソースの追加
WebManager(Builder)を使用して MySQLモニタリソースを追加します。クライアント PC の Webブラウザから WebManager に接続(http://192.168.10.9:29003/)して、[ファイル(F)]メニュー下のモードを[設定モード]
(Builder に変更)にします。次に[ファイル(F)]メニューから[設定の取得(T)]を選択して、現在の設定情報を取得し ます。
[cluster]→[Monitors]を選択し、右クリック後に表示されるメニューから[モニタリソースの追加(A)]を選択しま す。
図 41:モニタリソースの定義画面
[タイプ(T)]に[MySQL minitor]を選択、[名前(M)]入力ボックスに「mysqlw1」を入力し[次へ(N)>]をクリッ クします。
[監視タイミング]の[参照(W)]ボタンをクリックして MySQLGroupグループの exec1 リソースを選択し[次へ
(N)>]をクリックします。
[データベース名(D)]入力ボックスに前項で作成したデータベース名「CPROAgent_db」を入力、[IP アドレス
(R)]入力ボックスに「127.0.01」を入力、[ポート番号(O)]入力ボックスに MySQL が使用するポート番号「3306」
を入力、[ユーザ名(U)]入力ボックスに前項で作成した MySQL ユーザ名「CPROAgent」を入力、[パスワード(P)]
入力ボックスに MySQL ユーザ CPROAgent のパスワード「turbolinux」を入力、[ストレージエンジン(E)]に
[InnoDB]を選択、[ライブラリパス(L)]入力ボックスに「/usr/local/mysql/lib/libmysqlclient.so」を入力し[次 へ(N)>]をクリックします。
図 42:モニタリソースの定義画面 - 監視(共通)設定
図 43:モニタリソースの定義画面 - 監視(固有)設定
[回復対象]に[参照(W)]ボタンをクリックして[MySQLGroup]を選択、[最終動作(F)]に[グループ停止]を選 択し[完了]ボタンをクリックします。
MySQLモニタリソース mysqlw1 の追加後に、WebManagerから起動されたBuilder の[ファイル(F)]メ ニューから[設定の反映(A)]をクリックし、変更した内容をクラスタへ反映します。クラスタに反映するとクラスタがサ スペンドするため、WebManager に再接続して[サービス(S)]メニューの[クラスタリジューム(R)]を選択してサス ペンドしたクラスタを回復します。
3.4.3.3. MySQL モニタリソースの動作確認
クラスタの回復後に、MySQLモニタリソースが機能して MySQL に対する死活監視を行うことができるか確認しま す。方法は、MySQLGroupグループの exec1 リソースから起動した MySQL サーバを強制的に停止することにより、
MySQLGroupグループがフェイルオーバすることを確認します。
(server1 で MySQLGroup グループが起動していることを確認)
[root@server1 ~]# clpstat
======================== CLUSTER STATUS ===========================
Cluster : cluster
・・・
MySQLGroup ...: Online current : server1 exec1 : Online fip1 : Online md1 : Online
・・・
=====================================================================
(server1 で MySQL サーバを停止)
[root@server1 ~]# service mysql.server stop Shutting down MySQL.. SUCCESS!
図 44:モニタリソースの定義画面 - 回復動作設定
MySQLモニタリソース mysqlw1 を定義(監視(共通))した、インターバルとタイムアウト値を足した時間を待って MySQLGroupグループがフェイルーバするか確認します。
(server1 で MySQLGroup グループが起動していることを確認)
[root@server1 ~]# clpstat
======================== CLUSTER STATUS ===========================
Cluster : cluster
・・・
<group>
・・・
MySQLGroup ...: Online Pending current : server2 exec1 : Online Pending fip1 : Online
md1 : Online
・・・
=====================================================================
4章. 導入後に
本章では、クラスタシステムの運用を開始する前に必要な作業等について説明しています。
4.1. MySQL に係わる設定の確認
ここでは、クラスタ対象アプリケーションである MySQL に係わる設定について説明しています。
4.1.1. MySQL に係わるディレクトリやファイルについて
現用系サーバ server1 と待機系サーバ server2 にインストールした MySQL に係わるディレクトリやファイルを表 4:MySQL のディレクトリやファイルにまとめます。プログラムを開発もしくは使用する場合や、MySQL を設定する際 に参考にしてください。
表 4:MySQL のディレクトリやファイル
ディレクトリ / ファイル名 内容
/usr/local/mysql/bin MySQL のサーバ及びクライアントプログラムが保存されているディレク トリ
/usr/local/mysql/data ログやデータベースが保存されているディレクトリであり、実際には
CLUSTERPRO が管理しているミラーディスク(/mnt/md1/data)にリ ンクされている
/usr/local/mysql/docs マニュアルが保存されているディレクトリ /usr/local/mysql/include ヘッダファイルが保存されているディレクトリ /usr/local/mysql/lib ライブラリが保存されているディレクトリ
/usr/local/mysql/man オンライアンマニュアル(man)が保存されているディレクトリ /usr/local/mysql/mysql-test MySQL サーバのテスト・スイートが保存されているディレクトリ /usr/local/mysql/scripts MySQL サーバを初期化するスクリプトが保存されているディレクトリ /usr/local/mysql/share エラーメッセージやサンプル構成ファイル、データベースを作成する際に
必要なSQL ファイル等が保存されているディレクトリ
/usr/local/mysql/sql-bench MySQL Benchmarks が保存されているディレクトリ
/usr/local/mysql/support-files サンプルとなる MySQL の設定ファイルや MySQL サーバを制御するス クリプトが保存されているディレクトリ
/etc/init.d/mysql.server MySQL サーバを制御するスクリプトファイル
/etc/my.cnf MySQL の設定ファイル
4.1.2. MySQL のサーバ変数の確認
MySQL サーバを設定するには、サーバ変数を変更する必要があります。サーバ変数は、MySQL の設定ファイルで ある my.cnf に設定値を記述したり、MySQL サーバを起動する際に指定することができます。また、SQL文で変更す ることも可能です。MySQL が稼働する実際の環境に合わせて設定する必要があります。
サーバ変数を知ることが可能です。
(server1かserver2 において mysql ユーザで実行)
$ mysql -h 192.168.10.10 -u mysql -pturbolinux -e 'SHOW VARIABLES'
+---+---・・・
| Variable_name | Value
+---+---・・・
| auto_increment_increment | 1
・・・
(server1かserver2 において mysql ユーザで実行)
$ mysqladmin -h 192.168.10.10 -u mysql -pturbolinux variables
+---+---・・・
| Variable_name | Value
+---+---・・・
| auto_increment_increment | 1
・・・
また、実行されている MySQL サーバの状況を知るためには、次のコマンドを実行します。
(server1かserver2 において mysql ユーザで実行)
$ mysql -h 192.168.10.10 -u mysql -pturbolinux -e 'SHOW STATUS' +---+---+
| Variable_name | Value | +---+---+
| Aborted_clients | 0 |
・・・
(server1かserver2 において mysql ユーザで実行)
$ mysqladmin -h 192.168.10.10 -u mysql -pturbolinux extended-status +---+---+
| Variable_name | Value | +---+---+
| Aborted_clients | 0 |
・・・
次に、サーバ変数を変更する例を挙げます。例えば、MySQL サーバに接続することが可能な最大クライアント数
(max_connections)を 200 に変更する場合は、次の手順で設定します。
(server1かserver2 において mysql ユーザで実行)
$ mysqladmin -h 192.168.10.10 -u mysql -pturbolinux variables |grep max_connections
| max_connections | 151
$ mysql -h 192.168.10.10 -u mysql -pturbolinux -e 'SET @@global.max_connections=200'
$ mysqladmin -h 192.168.10.10 -u mysql -pturbolinux variables |grep max_connections
| max_connections | 200
SQL でサーバ変数を変更した場合は、MySQL サーバが停止するまで有効です。MySQL サーバが起動する際に サーバ変数を設定する場合は、my.cnf に設定値を記述するかMySQL サーバを起動するスクリプトファイルに記述し ます。
my.cnf や MySQL サーバを起動するスクリプトファイルは、現用系サーバと待機系サーバのローカルディ スクに保存しミラーリングしていないため、変更する場合は各サーバで行う必要があります。
4.1.3. MySQL に関連する OS の設定
MySQL をハードウェアスペック等の動作環境に合わせた設定を行ったとしても、OS を環境に合わせて設定してい ない場合に期待した結果を得ることができない可能性があります。ここでは、いくつかの MySQL に関連する基本的な OS の設定について説明しています。
4.1.3.1. MySQL サーバに接続するクライアント数に関連する設定
MySQL サーバに接続することが可能な最大クライアント数を設定する場合、サーバ変数”max_connections”値 を変更します。これに伴い、次の OS 設定値を確認する必要があります。
✔
Linuxカーネル・パラメータ:file-maxMySQL サーバに接続するクライアント数に比例して OS が管理するファイルハンドル数が増加します。
max_connections値を増やす場合、OS で利用可能なファイルハンドルの最大数を確認しておく必要がありま す。設定値を確認するには次のコマンドを実行します。
ファイルハンドルの最大数を確認
# cat /proc/sys/fs/file-max
設定値を変更するには次のコマンドを実行します。
ファイルハンドル最大数を 300,000 に変更
# echo 300000 > /proc/sys/fs/file-max
OS を起動する際に設定値を変更(最大数を 300,000)するには、/etc/sysconfig/kparam に次の行を追加 します。
/etc/sysconfig/kparam
/proc/sys/fs/file-max 300000
✔
Linuxカーネル・パラメータ:threads-maxMySQL サーバに接続するクライアント数を増やす場合、OS で使用可能な最大スレッド数を確認しておく必 要があります。設定値を確認するには次のコマンドを実行します。
スレッド(プロセス)の最大数を確認
# cat /proc/sys/kernel/threads-max
設定値を変更するには次のコマンドを実行します。
スレッド最大数を 19,200 に変更
# echo 19200 > /proc/sys/kernel/threads-max
OS を起動する際に設定値を変更(最大数を 19,200)するには、/etc/sysconfig/kparam に次の行を追加 します。
/etc/sysconfig/kparam
/proc/sys/kernel/threads-max 19200
✔
ユーザ毎のファイルディスクリプタの上限値MySQL サーバはユーザアカウント mysql で実行します(本資料のクラスタシステムの場合)。先に説明した OS 全体の制限値とは別に、ユーザ毎にオープンできるファイルディスクリプタ数を確認する必要があります。設 定値を確認するにはユーザアカウンント mysql で次のコマンドを実行します。
ファイルディスクリプタ数の確認
$ ulimit -n
設定値を変更(最大数を 65,536)するには、/etc/security/limits.conf に次の行を追加します。
/etc/security/limits.conf
mysql hard nofile 65536 mysql soft nofile 65536
✔
ユーザ毎のプロセス数の上限値プロセス数についても、先に説明した OS 全体の制限値とは別にユーザ毎に使用可能なプロセス数を確認す る必要があります。設定値を確認するにはユーザアカウンント mysql で次のコマンドを実行します。
プロセス数の確認
$ ulimit -u
設定値を変更(最大数を9,600)するには、/etc/security/limits.conf に次の行を追加します。
/etc/security/limits.conf
mysql hard nproc 9600 mysql soft nproc 9600
4.1.3.2. MySQL サーバが使用するファイル数に関連する設定
MySQL サーバにおいて使用するストレージエンジンにより、データベースオブジェクト(例えばテーブル)数に比例 して MySQL サーバが同時に使用可能なファイル数の設定(サーバ変数”open_files_limit”値)を変更する必要が あります。この場合、前項で説明した OS が管理するファイルハンドル数やユーザ毎のファイルディスクリプタの上限値 を確認して必要があれば設定値を変更します。
4.2. 待機系サーバを有効活用する
本資料で説明しているクラスタシステムでは、現用系サーバで MySQL が稼働し、待機系サーバはコールドスタン バイしています。この待機系サーバを有効活用する例の一つとして MySQL の管理ツールを稼働させ、現用系で稼働 する MySQL を管理します。
4.2.1. MySQL の管理ツール phpMyAdmin を導入
ここでは、GNU GPL v2 として公開されている MySQL の管理ツール phpMyAdmin を導入して、待機系サーバ で稼働させて MySQL を管理します。まず、次のサイトからphpMyAdmin を入手します。
http://www.phpmyadmin.net/
ダウンロードしたファイル(ここでは、phpMyAdmin-3.4.3.2-all-languages.tar.gz)を待機系サーバにコピーしてイ