根据我们的mysql服务器优化大体思路,现在我们的主要任务是『通过脚本,刷新观察status,是否有周期性故障或波动』
mysql> show status #查看mysql状态
返回200多行,我们注重看下面几个:
Queries #当前已经发生了多少次查询
Threads_connected #有几个线程过来连接了
Threads_running #有几个线程正在工作
====================================
AWK脚本
AWK是一个简便的直译式的文本处理工具,擅长处理多行多列数据。
处理过程:
While(还有下一行){
1.读取下一行,并把下一行赋给
0,各列赋给
1,
2...
N变量
2.用指定的命令来处理该行
}
如果处理1行数据?
答:分两部分,pattern(条件)+ action(处理动作)
演示:
写一个 score.txt
name yw shuxue
lisi 3 12
ww 4 23
lucy 5 89
[root@localhost ~]# awk 'printf("%s\n",$0)' score.txt
name yw shuxue
lisi 3 12
ww 4 23
lucy 5 89
[root@localhost ~]# awk 'printf("%s\n",$1)' score.txt
name
lisi
ww
lucy
[root@localhost ~]# awk 'printf("%s\n",$2)' score.txt
yw
3
4
5
只要"l"开头的
#awk '/l/{printf("%s\n",$0)}' score.txt
lisi 3 12
lucy 5 89
如何借助awk统计mysql状态中的的Queries哪一行数量?
[root@localhost ~]#mysqladmin -uroot ext|awk '/Queries/{printf("%d\n",$4)}'
那么如何统计Queries、Threads_connected、Threads_running这三行呢?
mysqladmin -uroot ext|awk '/Queries/{printf("%d ",$4)}/Threads_connected/{printf("%d ",$4)}/Threads_running/{printf("%d\n",$4)}'
如果我们把这个脚本每秒刷新一次,并且把结果记录下来,就能不管的观察mysql的状态了
awk还支持变量定义
mysqladmin -uroot -padmin888 ext|awk '/Queries/{q=$4}/Threads_connected/{c=$4}/Threads_running/{r=$4}END{printf("%d %d %d\n",q,c,r)}'