설명:
운영체제: CentOS
목적: MySQL 마스터-슬레이브 데이터베이스의 동기화 여부를 정기적으로 모니터링하고, 동기화되지 않은 경우 실패 시간을 기록하고 마스터를 복원하는 명령을 실행합니다. -slave 동기화 상태
1. 스크립트 파일 생성
vi /home/crontab/check_mysql_slave.sh #편집, 다음 코드 추가
#!/bin/sh
# check_mysql_slave 상태
# 작성자 www.osyunwei.com
ip=eth0 #네트워크 카드 이름
mysql_binfile=/usr/local/mysql/ bin/mysql
mysql_user=root #MySQL 데이터베이스 계정
mysql_pass=123456 #Password
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 "실행 중")
Slave_IO_Running=`echo $status | grep Slave_IO_Running | `
Slave_SQL_Running=` echo $status | grep Slave_SQL_Running | awk '{print $2}'`
if [ "$Slave_IO_Running" = "예" -a "$Slave_SQL_Running" = "예 " ]
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 -e "SET GLOBAL SQL_SLAVE_SKIP_COUNTER =1;"
$mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "SLAVE START;"
$mysql_binfile -u$mysql_user -p$mysql_pass -S $ mysql_sockfile -e "EXIT"
fi
:wq! #저장하고 종료
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 마스터-슬레이브 동기화 상태 보기
이때 MySQL 마스터-슬레이브 동기화 모니터링 쉘 스크립트는 Linux에서는 완료되었습니다.