我们经常用到show processlist来观察MySQL的状态,在观察某个操作带来的任何风险时候,需要频繁刷新,我写了个脚本来每2秒刷新查看process进程
中状态
在会话1执行shell脚本
sh 2sprocesslist.sh执行,1s停掉,生成了grants.sql文件
新开一个会话2进程观察
# tail -f grants.sql
在会话1执行sh 2sprocesslist.sh,切回会话2,观察
如下输出
这个方法有点...如果你有更简洁更简单的方法请贴出了共同学习,谢谢
中状态
# cat processlist.sh
#!/bin/bash
#
#author:bohai
#address:http://blog.csdn.net/bohai0409
user=bohai
password=bohai@focus
sock=/tmp/mysql_bhtest.sock
expgrants()
{
mysql -u$user -p$password -S $sock -e 'show processlist\G' | grep State | sort | uniq -c | sort -rn
mysql -u$user -p$password -S $sock -e 'select now()\G' | grep now
}
expgrants >> ./grants.sql
# cat 2sprocesslist.sh
#!/bin/bash
step=2
for (( i = 0; i < 60; i=(i+step) )); do
$(sh /home/bohai/processlist.sh;)
sleep $step
done
exit 0
下面我们来演示下刷新方法
在会话1执行shell脚本
sh 2sprocesslist.sh执行,1s停掉,生成了grants.sql文件
新开一个会话2进程观察
# tail -f grants.sql
在会话1执行sh 2sprocesslist.sh,切回会话2,观察
如下输出
# tail -f grants.sql
now(): 2014-11-06 16:22:56
30 State:
1 State: Waiting on empty queue
1 State: NULL
now(): 2014-11-06 16:22:58
30 State:
1 State: Waiting on empty queue
1 State: NULL
now(): 2014-11-06 16:23:00
30 State:
1 State: Waiting on empty queue
1 State: NULL
至此,我们能够清楚记录时间和process中状态及数量
这个方法有点...如果你有更简洁更简单的方法请贴出了共同学习,谢谢