MySQLサーバの動作チェックプログラム
MySQLサーバの動作チェックプログラム
0.改訂履歴
- 2007.06.27 新規作成
- 2007.07.17 体裁を整えた
1.はじめに
このドキュメントでは,MySQLの動作確認を行うプログラムの作成と動作について説明する. MySQLはデーモンとして動作するが,そのプロセスリストでのチェックだけだと,正しく動作していない可能性がある. よって,実際に接続できるかを確認するためのプログラムを作成し,ヘルスチェック用のテーブルに対してアクセスを行って実働状態かどうかを確認する.
なお,使用しているOSは,RedHat Linux ES3上で稼働しており,MySQL5.0で動作確認を行った.
2.ヘルスチェック用データベースとテーブルを作成する
- ヘルスチェック用のデータベースとテーブルを作成する.
- ヘルスチェック用コマンドからは,接続してこのテーブルにアクセスして状態を確認する.
- mysqlモニターでデータベースに接続する.
[special@neptune special]$ mysql -uroot -p
Enter password: ■■■■■■
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 6030 to server version: 5.0.24a-log
Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.
[root@localhost (none)]: >
|
[root@localhost test]: >create database HEALTH_CHECKDB;
Query OK, 1 row affected (0.09 sec)
[root@localhost test]: >
|
[root@localhost test]: >create table HEALTH_CHECKDB.mysql (status varchar(5) );
Query OK, 0 rows affected (0.01 sec)
[root@localhost test]: >
|
[root@localhost test]: >insert into HEALTH_CHECKDB.mysql (status) values ("OK");
Query OK, 1 row affected (0.02 sec)
[root@localhost test]:
|
[root@localhost test]: >select status from HEALTH_CHECKDB.mysql;
+--------+
| status |
+--------+
| OK |
+--------+
1 row in set (0.00 sec)
[root@localhost test]: >
|
- 検索できることが確認できた.
- MySQLモニタを終了する.
[root@localhost test]: >quit
Bye
[special@neptune special]$
|
- これで,外部プログラムから定期的に接続して,このテーブルが検索できるかを確認すればよい.
コピペ用
create database HEALTH_CHECKDB;
create table HEALTH_CHECKDB.mysql (status varchar(5) );
insert into HEALTH_CHECKDB.mysql (status) values ("OK");
|
3.ヘルスチェックプログラムの作成
- コマンドラインから,MySQLに接続して検索結果を表示させてみる.
[special@neptune special]$ echo "select status from HEALTH_CHECKDB.mysql;" | mysql -uro
ot -pkccs00 --skip-column-names
OK
[special@neptune special]$
|
[root@neptune special]# cat /www/nfs/system/bin/MySQLheartbeat.sh
#!/bin/bash
DBUSER=root
DBPASS=PASSWD
/usr/local/bin/mysql -u$DBUSER -p$DBPASS --skip-column-names --execute="select status from
HEALTH_CHECKDB.mysql" > /dev/null
if [ $? = 0 ];
then
MESSAGE="`date +%Y.%m.%d.%k.%M.%S` OK `hostname` MySQL connect check OK."
echo $MESSAGE >> /www/local/var/log/HealthCheck.log
else
/usr/local/apache/bin/apachectl stop
MESSAGE="`date +%Y.%m.%d.%k.%M.%S` ERROR `hostname` MySQL connect error. Auto stop
Apache"
echo $MESSAGE >> /var/log/HealthCheck.log
fi
[root@neptune special]#
|
[root@neptune special]# /www/nfs/system/bin/MySQLheartbeat.sh
OK
[root@neptune special]#
|
- このプログラムでは,MySQLに接続できなかったらApacheを停止するような仕組みになっているが,業務によって適切なコマンドに置き換えればよい.