MySQLレプリケーション スレーブ監視スクリプト
今、2台のサーバーでMySQLレプリケーションをしています。
ちなみにOSはCentOS5。
サーバーの動作監視はフリーソフトのnagiosで監視してて
停止するとメールでお知らせする設定になってます。
レプリケーションに対して監視という意味ではこれでは不十分でした。 orz
スレーブサーバーでレプリケーションが停止してもメールは来ない!
何故ってMySQL自体は落ちてないから!
これは気付けなかったのでいろいろ調べた結果、監視スクリプトを作っていた
サイトを参考にしてみた。
コマンドで
# /usr/bin/mysql -u root -pパスワード -e ‘show slave status \G’
↑って打つとmysqlに入らなくてもステータスが表示されるので、これを上手く使ってます。
レプリケーションが正常に動いていればSlave_IO_RunningとSlave_SQL_Runningが
yesになってます。どちらか片っぽがnoだとちゃんと動いていません。
Slave_IO_RunningとSlave_SQL_Runningの値がyesでなければ
show slave statusで取得できるステータス一覧をメールで送信するスクリプト。
参考サイト
MYSQLレプリケーション設定
※nkf で文字コードを変換してるのでnkfが入ってなければインストール。
yum が使えれば # yum install nkf で楽々インストール出来ます。
上記のサイトの一番したに監視スクリプトが書いてあったので、自分なりにタイトルや本文を編集出来て
Cc:を付けて送信出来るように編集
– replck.sh –
#!/bin/sh
to_mail=***@test.co.jp ← 送信先アドレス
mail_cc_1=***@docomo.ne.jp ← Cc: アドレス指定
subject=ここにメールタイトルを入れる
subject=`echo $subject | nkf -j` ← メールタイトルのエンコード
PASSWORD=”PASSWD”
eval “`/usr/bin/mysql -u root -p${PASSWORD} -e ‘show slave status \G’ | sed -ne ‘s/: \(.*\)/=”\1″/p’ `”
if [ "$?${Slave_IO_Running}${Slave_SQL_Running}" != "0YesYes" ]; then
/usr/bin/mysql -u root -p”${PASSWORD}” -e ‘show slave status \G’ |mail -s $subject $to_mail -c $mail_cc_1 -c $mail_cc_2 -c << HONBUN
ここにメール本文を入れる
HONBUN
exit 1
fi
----------------------------
Cc: を増やすにはmail_cc_2,mail_cc_3と増やして、その分、mail -c も増やさないとといけない
やり方なのでなんか効率よくないかも。
もっといいやり方があるかもしれませんが今の自分にはこれが精一杯。
もう少しスマートに出来るやり方があればコメント下さい。よろしくお願いします。
あとはこのスクリプトをCronで動かせばレプリケーションの監視は大丈夫なはず!
メール来るか確認したいけど、今スレーブ止めるとヤバイのでやめとこう・・
MyHomePage : Coover
![]()
http://aiks.info/