手順:
オペレーティングシステム: CentOS
目的: MySQL マスターとスレーブのデータベースが同期しているかどうかを定期的に監視し、同期していない場合は、失敗した時間を記録し、マスターとスレーブの同期状態を復元するコマンドを実行します
1。スクリプトファイル
vi / home/crontab/check_mysql_slave.sh #編集して次のコードを追加します
#!/bin/sh
# check_mysql_slave status
# author www.osyunwei.com
ip=eth0 #Networkカード名
mysql_binfile=/usr/ local/mysql/bin/mysql
mysql_user=root #MySQLデータベースアカウント
mysql_pass=123456 #パスワード
mysql_sockfile=/tmp/mysql.sock
datetime=`date + 」 %Y-%m-%d/ %H:%M:%S"` #現在時刻を取得します
mysql_slave_logfile=/home/logs/check_mysql_slave.log #ログファイルのパスは事前に作成する必要があります
slave_ip= `ifconfig $ip|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
status=$($mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "スレーブステータスを表示G" | grep -i "running" )
Slave_IO_Running=`echo $status | grep Slave_IO_Running | awk '{print $2}'`
Slave_SQL_Running=`echo $status | grep Slave_SQL_Running | awk '{print $2} '`
if [ "$Slave_IO_Running" = "Yes" -a "$Slave_SQL_Running" = "Yes" ]
then echo "スレーブは実行中です!"
else
echo " $datetime $slave_ip スレーブは実行されていません!" >> $mysql_slave_logfile
$ mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "SLAVE STOP;"
$mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -え」グローバルSQL_SLAVE_SKIP_COUNTER = 1; " EXIT"
fi
:wq! #Save Exit
chmod +x /home/crontab/check_mysql_slave.sh #スクリプト実行権限を追加
2. タスクプランを追加し、/etc/crontab
vi /etc を変更します/crontab #最後の行に
*/10 を追加します * * * * root /home/crontab/check_mysql_slave.sh #10 分ごとに実行することを示します
:wq! #保存して終了します
3. crond を再起動します。設定が有効になります
/etc/rc.d/init.d /crond restart #yum install -y vixie-cron インストールスケジュールされたタスク、一部のシステムはプリインストールされていない可能性があります
chkconfig crond on #起動時に開始するように設定します
service crond start #Start
ログファイル /home/logs /check_mysql_slave.log に従って MySQL のマスターとスレーブの同期ステータスを確認します この時点で、Linux での MySQL のマスターとスレーブの同期監視シェル スクリプトが完了します。