- 注册时间
- 2010-6-18
- 最后登录
- 2017-11-29
- 在线时间
- 162 小时
- 阅读权限
- 90
- 积分
- 21095
- 帖子
- 137
- 主题
- 15
- 精华
- 1
- UID
- 9568
 
- 签到
- 246
- 注册时间
- 2010-6-18
- 最后登录
- 2017-11-29
- 在线时间
- 162 小时
- 阅读权限
- 90
- 积分
- 21095
- 帖子
- 137
- 主题
- 15
- 精华
- 1
- UID
- 9568
|
发表于 2011-5-18 15:18:10
|显示全部楼层
本帖最后由 spitfire00 于 2011-5-18 15:19 编辑
本脚本使用maatkit工具,在从数据库库上设置定时任务,校验与主库的同步情况,maatkit工具使用说明在这里就不多说了。脚本在附件里,里面有2个文件。
1. setup_replica_check.sh
本脚本安装maatkit工具,并把校验脚本移动到指定目录,设置crontab。
#/bin/bash
# This script use for set mysql replication check.
# Modify by liuhongwei@quyou 2010-12-4
# Last Modify: 2011-5-4
SOFT_VER=7410
#SOFT_VER=6652
SCRIPTPATH=/usr/local/sbin
# Install Perl
yum -y install perl*
# Download SoftWave
wget http://maatkit.googlecode.com/files/maatkit-${SOFT_VER}.tar.gz
# Install Maatkit
tar zxvf maatkit-${SOFT_VER}.tar.gz
cd maatkit-${SOFT_VER}
perl Makefile.PL
make install
# Move Check_Scripts
cd ..
cp check_replication.sh $SCRIPTPATH
# Set Crontab
chmod +x $SCRIPTPATH/check_replication.sh
echo "30 4 * * 1,5 $SCRIPTPATH/check_replication.sh" >> /var/spool/cron/root
# Clean Files
rm -rf maatkit-${SOFT_VER}
rm -f maatkit-${SOFT_VER}.tar.gz
2. check_replication.sh
本脚本根据数据库信息,改动变量参数就可以运行了。
#!/bin/bash
# Modify by spitfire 2010-10-19
# Last Modify: 2011-5-4
# 30 4 * * 1,5 /usr/local/sbin/check_replication.sh
# Variable
dblist="db1 db2"
master=192.168.x.x
user=admin
passwd=admin
hostname=dbmaster
mail=bingqihan@gmail.com
# Quantitative
logpath=/tmp/check_replication/
log=$logpath/check_replication.log
errorlog=$logpath/error.log
mailfile=$logpath/mail.log
time=`date +"%y-%m-%d %H:%M:%S"`
# Mkdir
if [ -d $logpath ]
then notdo="nothing"
else mkdir -p /tmp/check_replication
fi
# Start Checking
echo "" >$errorlog
for db in $dblist
do
mk-table-checksum --count h=localhost,u=$user,p=$passwd,S=/tmp/mysql.sock h=$master,u=$user,p=$passwd, -d $db|mk-checksum-filter >>$errorlog
done
if [ `ls -l $errorlog | awk '{print $5}'` -le 1 ]
then
echo "---------------------------------------------------------------------" > $mailfile
echo "Check Mysql Replication Time : $time,Replication Normal!" >> $mailfile
mail -s "$hostname Replication Normal" $mail < $mailfile
else
echo "---------------------------------------------------------------------" > $mailfile
echo "Check Mysql Replication Time : $time,Replication Error!" >> $mailfile
echo "" >> $mailfile
echo "DATABASE TABLE CHUNK HOST ENGINE COUNT CHECKSUM TIME WAIT STAT LAG" >> $mailfile
cat $errorlog >> $mailfile
mail -s "$hostname Replication Error" $mail < $mailfile
fi
# Written to the log
cat $mailfile >>$log
# End
3. 抛砖引玉,如果其他同学有好的监控和校验MySQL主从的方式,希望分享一下~
|
|