MySQLレプリケーションステータスを監視する簡単なBashスクリプトを作成しようとしています。スクリプトは次のようなものです:BASH:条件をテストする前にエラーを確認してください
#!/bin/bash
dbhost=192.168.1.2
repluser=root
replpasswd=password
echo "show slave status\G"|\
mysql -h $dbhost -u $repluser -p$replpasswd > tmpd 2>/dev/null
repl_IO=$(cat tmpd | grep "Slave_IO_Running" | cut -f2 -d':')
repl_SQL=$(cat tmpd | grep "Slave_SQL_Running" | cut -f2 -d':')
if [ $repl_IO != "Yes" -o $repl_SQL != "Yes" ] ; then
echo
echo -e "\033[31m Replication Error."
echo -e "\033[0m"
mail -s "replication error" [email protected] < tmpd
else
echo
echo -e "\033[32mReplication is working fine"
echo -e "\033[0m"
fi
問題は、スクリプトがマスターとスレーブの両方が起動している場合にのみ機能することです。マスターがダウンしていて、スクリプトを実行すると、エラーメッセージが表示され、電子メールが送信されます。 マスター/スレーブの両方が起動している場合、スクリプトは「レプリケーションは正常に動作しています」と表示します。私はシャットダウンスレーブとは、スクリプトを実行するときしかし、私はこのエラーを取得する:
./monitor.bash: line 9: [: too many arguments
Replication is working fine
私はこの問題は、私がスレーブMySQLサーバを照会していますから、それはそれを見つけていないことを知っています。したがって、条件Slave_IO_RunningとSlave_SQL_Runningをチェックしていません。これらの条件を実行する前に、スレーブサーバーが起動しているかどうかの確認については、どうすれば に行くのでしょうか。つまり、マスター&スレーブが稼動していて、 が稼働していて、それがそれらの条件と一致していれば、「レプリケーションは正常に動作しています」と表示するだけです。どんな助けもありがとう。ありがとうございました。あなたのスクリプトで
こんにちは、あなたの助けと説明いただき、誠にありがとうございます。非常に高く評価。 – user1013264
@ user1013264:ようこそ! – ruakh