欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL 复制检测脚本

程序员文章站 2022-04-18 20:00:51
...

以下是根据网上的脚本整理,并结合实际进行改进。#!/bin/shusage=quot;$0 -hlocalhost -uroot -pxxxx -P3306quot;dbhost=quot

以下是根据网上的脚本整理,并结合实际进行改进。

#!/bin/sh

usage="$0 -hlocalhost -uroot -pxxxx -P3306"
dbhost="localhost"
dbuser=""
dbpass=""
dbport=3306

for varin in $* ; do
if [ ${varin:0:2} = '-h' ] ; then
dbhost=${varin:2}
fi
if [ ${varin:0:2} = '-u' ] ; then
dbuser=${varin:2}
fi
if [ ${varin:0:2} = '-p' ] ; then
dbpass=${varin:2}
fi

if [ ${varin:0:2} = '-P' ] ; then
dbport=${varin:2}
fi
done

echo $dbhost
echo $dbuser
echo $dbpass
echo $dbport

now=`date +"%Y%m%d%H%M%S"`
datelog=`date +"%Y-%m-%d %H:%M:%S"`
StatFile="./slave_status.$now"
checklogfile="/var/log/mysql_slavecheck.log"
echo "show slave status\G" | /usr/local/mysql/bin/mysql -u$dbuser -p$dbpass -h$dbhost -P$dbport > $StatFile


#get io_thread,sql_thread,last_errno status
#*************************** 1. row ***************************
# Slave_IO_State: Connecting to master
# Master_Host: 192.168.213.5
# Master_User: synuser
# Master_Port: 3306
# Connect_Retry: 60
# Master_Log_File: mysql-bin.000019
# Read_Master_Log_Pos: 366270403
# Relay_Log_File: Test-Web1-relay-bin.003133
# Relay_Log_Pos: 98
# Relay_Master_Log_File: mysql-bin.000019
# Slave_IO_Running: No
# Slave_SQL_Running: Yes
# Replicate_Do_DB:
# Replicate_Ignore_DB:
# Replicate_Do_Table:
# Replicate_Ignore_Table:
# Replicate_Wild_Do_Table:
#Replicate_Wild_Ignore_Table:
# Last_Errno: 0
# Last_Error:
# Skip_Counter: 0
# Exec_Master_Log_Pos: 98
# Relay_Log_Space: 98
# Until_Condition: None
# Until_Log_File:
# Until_Log_Pos: 0
# Master_SSL_Allowed: No
# Master_SSL_CA_File:
# Master_SSL_CA_Path:
# Master_SSL_Cert:
# Master_SSL_Cipher:
# Master_SSL_Key:
# Seconds_Behind_Master: NULL
IOSTAT=`grep "Slave_IO_Running" $StatFile |awk '{print $2}'`
SQLSTAT=`grep "Slave_SQL_Running" $StatFile |awk '{print $2}'`
Last_Errno=`grep "Last_Errno" $StatFile |awk '{print $2}'`
Last_Error=`grep "Last_Error" $StatFile |awk '{print $2}'`
Behind_Master=`grep "Seconds_Behind_Master" $StatFile |awk '{print $2}'`
if [ $IOSTAT = 'No' ] || [ $SQLSTAT = 'No' ] ; then
echo "Server $dbhost:$dbport Slave is down,Check Time is :$datelog " > $checklogfile

if [ $Behind_Master = 'NULL' ] ; then
echo "Server $dbhost:$dbport Slave not support slave-master,Check Time is :$datelog " >> $checklogfile
else
echo ">>Last_ErrNo:$Last_Errno" >>$checklogfile
echo ">>Last_Error:$Last_Error" >>$checklogfile
echo ">>slave is behind master $Behind seconds!" >>$checklogfile
fi
fi
/bin/rm -rf $StatFile

MySQL 复制检测脚本