查看: 457|回复: 0

利用expect的超时功能实现检测mysql状态的超时

 关闭 [复制链接]

签到天数: 2594 天

连续签到: 8 天

[LV.Master]至尊海神IIIIII

发表于 2010-9-9 15:56 | 显示全部楼层 |阅读模式
利用expect的超时功能实现检测mysql状态的超时


mysqladmin以及mysql都没有超时功能。在系统状态异常时,当我们利用这两者来检测mysqld状态,有可能会长时间没有响应,而检测脚本如果没有超时功能,则无法迅速发出报警。

因此需要增加超时功能,在mysql或者mysqladmin超过特定时间而无响应时,能够发出报警,甚至发起切换。

简单的例子:

脚本test的内容:

#!/usr/bin/expect
spawn mysqladmin --socket=/usr/local/Calpont/mysql/lib/mysql/mysql.sock ping
set timeout $argv
expect "mysqld is alive" { exit 0 }
exit 1

运行
./test 5
spawn mysqladmin --socket=/usr/local/Calpont/mysql/lib/mysql/mysql.sock ping
mysqld is alive

如果5秒种没有响应,或者ping的结果不是mysqld is alive,则脚本异常退出(exit 1)

使用expect应该是一种比较简单的实现办法。
<
PCOS系统下载站:http://zhuangji.wang

本版积分规则