概述
分享下最近整理的一個(gè)mysql主從監(jiān)控腳本,僅供參考。
一、郵件配置
1、安裝郵件服務(wù)
yum -y install sendmail mailx


2、修改配置
# vi /etc/mail.rc --- 增加如下內(nèi)容 --- set from=yourname@your-domain.com set smtp=mail.your-domain.com set smtp-auth-user=yourname set smtp-auth-password=yourpasswd set smtp-auth=login
3、啟動

4、測試
echo 內(nèi)容 | mailx -s '標(biāo)題' 接收人郵箱
注意!mailx -v 選項(xiàng)可以查看執(zhí)行過程,對排錯很有用!
二、mysql主從監(jiān)控腳本
其實(shí)思路很簡單,查看MySQL主從狀態(tài)應(yīng)該都會,就是進(jìn)入MySQL,然后show master status和show slave status G,然后我要做的其實(shí)就是通過腳本定時(shí)進(jìn)入MySQL然后查看狀態(tài)得到信息,再通過grep和awk對文本進(jìn)行解析,然后關(guān)鍵的slave_sql_running、slave_io_running和last_error判斷后,異常則發(fā)送郵件。
1、配置密文
這里用mysql_config_editor的–login-path來解決明文密碼的問題
mysql_config_editor命令使用:
mysql_config_editor set --login-path=mydb --host=localhost --user=root --password
完成配置后,生成一個(gè)mydb的登錄點(diǎn)(login-path),密鑰保存在$HOME/.mylogin.cnf。以后訪問數(shù)據(jù)庫只要指定login-path的名稱即可
mysql --login-path=mydb

2、腳本內(nèi)容
#!/bin/bash #copyright by hwb #check MySQL_Slave Status #crontab time 00:10 ip="xx.xx" date=`date +"%y%m%d-%H:%M:%S"` #這里要輸出3306 port=`netstat -ntlp | grep 3306 | awk '{print $4}' | awk -F":" '{print $2}'` num=`mysql --login-path=mydb -e "show slave statusG" | grep Seconds_Behind_Master | awk '{print $2}'` array=($(mysql --login-path=mydb -e "show slave statusG"|egrep "Running|Seconds_Behind_Master" | awk '{print $2}')) #echo ${array[0]} #echo ${array[1]} #echo ${array[2]} #mysql服務(wù)狀態(tài)監(jiān)控 if [ "$port" == "3306" ];then echo "mysql is running" #主從復(fù)制存活狀態(tài)監(jiān)控 #if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ] && [ "${array[2]} " == "0" ]; then if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ]; then echo "MySQL slave status is ok !" else echo "####### $date #########">> /home/check_mysql_slave.log echo "Slave is not running!" >> /home/check_mysql_slave.log echo "Slave is not running!" | mail -s "warn!$ip MySQL Slave is not OK!" huangwb@fslgz.com fi #主從復(fù)制延時(shí)時(shí)間監(jiān)控 if [ $num -eq 0 ];then echo "Master and slave replication is consistent" else echo "Master and slave replication is inconsistent" | mail -s "WARN! $ip MySQL Slave is inconsistent" huangwb@fslgz.com fi else echo "Mysql is not running!" | mail -s "warn! $ip mysql is not running" huangwb@fslgz.com fi

3、設(shè)置定時(shí)任務(wù)
*/5 * * * * /bin/sh /home/scripts/mysql_check.sh > /dev/null 2&1
三、測試
1、執(zhí)行腳本

2、郵件
當(dāng)服務(wù)停止時(shí)收到郵件如下:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。原文轉(zhuǎn)載: 原文出處: