700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > shell监控MySQL主从状态脚本两则

shell监控MySQL主从状态脚本两则

时间:2020-06-11 07:55:52

相关推荐

shell监控MySQL主从状态脚本两则

数据库|mysql教程

mysql监控,mysql主从,主从监控,mysql延迟

数据库-mysql教程

nvelocity源码,vscode搜索键,ubuntu更新选择重启服务,tomcat 垃圾收集,sqlite从哪打开,web仿微信聊天插件,必须掌握的前端框架,如何编写反爬虫,php 创建php文件,武汉seo陈桥,仿刷机网站源码,javaweb网页客服代码,后台管理网站模板打开,wordpress标签页面添加自定义字段,品牌加盟管理系统源码,微擎小程序端配置lzw

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖本文来自http://yijiu./转载请经博主同意监控主从复制正常与否相比各位都应该知道,监控主从是否工

d3dhook方框源码,vscode出现好多光标,ubuntu系统的使用,rmi tomcat,sqlite3查询速度快不快,哈尔滨网页设计招聘信息网,.net access数据库链接,100m双线服务器,七牛上传织梦插件,web前端框架开发工具,吓爬虫,php 页面缓存,无锡seo服务,登录功能springboot,dw 换行标签,网站建站素材,简单网页模板免费下载,sdcms 模板,31个高大上的后台管理系统模版,获取当前页面地址url,asp 企业网站管理系统,dedecms程序员lzw

e4a影视源码带卡密,修改ubuntu 登录主题,热搜爬虫分析,php socket代理,seo全套课件lzw

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖

本文来自转载请经博主同意

监控主从复制正常与否

相比各位都应该知道,监控主从是否工作正常,涉及命令如下:

show slave status\G;

那么,我们需要关注的参数如下:

1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了)

2. 是否有延迟 是否大于0 #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警

#比如传递一个sql到slave上,,binlog中在eventhear中存在time stamp时间戳,在下条binlog拿到的时间会进行比较,如果当前时间是多少则显示多少,如果更新非常频繁500秒会产生更多的sql积累在其中

至少生产中监控就是这么实现的以及包括nagios的监控插件也是这么实现的

主要关注的值本文来自转载请经博主同意,

1.

Master_Log_File

Read_master_log_Pos

2.

Relay_Master_Log_File

Exec_Master_log_pos

3.

Seconds_Behind_master

判断一个库主要观察以上几点,如果主库挂了,Seconds_Behind_master 会已经成为NULL了

那么这样如何去观测从库是否日志同步完成,如下所示

通过shell实现监控同步的方法

废话不多说了直接上菜

1.利用status去观测是否已经同步完成

判断公式

以下为判断依据,判断以下值

Master_Log_File 和 Relay_Master_Log_File 的值必须相等

判断同步的偏移量

Read_master_log_Pos 和 Exec_Master_log_pos 的值必须相等

根据以上为最基础的判断依据,是否可将其从库提升为主库,就会在从库中判断master log file 是否读到的位置一样并找到一个最靠前的一个节点提升为主

shell内容如下所示:本文来自转载请经博主同意

#!/bin/bash

user=’root’

password=’mypass’

thread_status=`/usr/local/mysql/bin/mysql -u”$user” -p”$password” -S /tmp/mysql_3308.sock -e ‘show slave status\G’|grep -i yes|wc -l`

status=(`/usr/local/mysql/bin/mysql -u”$user” -p”$password” -S /tmp/mysql_3308.sock -e ‘show slave status\G’| egrep -i “Master_Log_File|Relay_Master_Log_File|Read_master_log_Pos|Exec_Master_log_pos|Seconds_Behind_Master” |awk -F’:’ ‘{print $2}’`)

echo ${status[4]}

if [[ “$thread_status” != 2 ]]; then

echo “the Replication is Fault , at $(date)” > $catalog

echo `uname -n` | mail umail@ ‘300’ ]];then

echo “yan chi guo gao, at $(date)” > $catalog

echo `uname -n` | mail umail@ $catalog

echo `uname -n` | mail umail@ < $catalog exit 2fi

如果时间一样则认为正常,如果master上的时间减去slave上的时间 出现了延迟,那么证明延迟存在的,但是这种方法存在缺陷,比如主库挂了那么则不可用

#!/bin/bash

user=’root’

password=’mypass’

/usr/local/mysql/bin/mysql -u”$user” -p”$password” -e ‘replace into master.repl_heart set t=now(),id=1;’ >/dev/null 2>&1

master_select=`/usr/local/mysql/bin/mysql -u”$user” -p”$password” -S /tmp/mysql.sock -e ‘select t from master.repl_heart where id=1;’ | awk ‘{print $2}’ | tail -1`

slave_select=`/usr/local/mysql/bin/mysql -u”$user” -p”$password” -S /tmp/mysql_3308.sock -e ‘select t from master.repl_heart where id=1;’ | awk ‘{print $2}’ | tail -1`

master_date=`date -d “$master_select” +%s`

slave_date=`date -d “$slave_select” +%s`

delay=`echo “$master_date”-“$slave_date” | bc`

if [[ $master_date == $slave_date ]];then

echo ‘is ok’

elif [[ $delay -le 500 ]];then

echo cun zai yan chi “$delay”

else

echo “the Replication delay too large “$delay” , at $(date)” > $catalog

echo `uname -n` | mail umail@ < $catalogfi

需要注意的是:复制中,如果是行格式,就是主库的时间;如果不是行式,这个方法可以把now这个内置函数在s脚本中生成再写入

以上,为监控mysql主从的两种shell的写法,如有不足,麻烦指出,感谢各位

本文出自 “心情依旧” 博客,转载请与作者联系!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。