UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

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を停止するような仕組みになっているが,業務によって適切なコマンドに置き換えればよい.


広告スペース
Google