MySQL DBA运维工具之mysqladmin
一.mysqladmin简介
mysqladmin是mysql自带的一个管理程序,可以查看MySQL的状态,配置信息,创建删除表,设置修改密码,切割日志,关闭服务等功能,今天,主要介绍一下通过mysqladmin查看mysql状态信息的一些用法,方便DBA实时获取MySQL数据库运行情况。
二.高级使用方法
此处借鉴https://www.orczhou.com/index.php/2014/03/some-tricky-about-mysqladmin-extended-status/此文章进行记录。使用extended-status,-i,-r参数,配合grep,awk命令,实现了和Orzdba几乎相似的功能,值得借鉴和思考。使用mysqladmin extended-status命令可以实时获取MySQL的所有性能指标,不过这些值都是累加结果,如果想要获得递增值,需要加上-r(--relative)参数,配合参数-i(--sleep)就可以指定刷新的频率,配合grep命令,过滤我们想要的状态参数,使用awk做流程控制和字段排版,切割,可以灵活的输出我们想要的信息。
示例一:
mysqladmin -uroot -p -h127.0.0.1 -P3357 -r -i 1 ext |\
awk -F"|" '{\
if($2 ~ /Variable_name/){\
print " <------------- " strftime("%H:%M:%S") " ------------->";\
}\
if($2 ~ /Questions|Queries|Innodb_rows|Com_select |Com_insert |Com_update |Com_delete |Innodb_buffer_pool_read_requests/)\
print $2 $3;\
}'
输出结果如下:
<------------- 18:17:15 ------------->
Com_delete 192
Com_insert 190
Com_select 2679
Com_update 381
Innodb_buffer_pool_read_requests 33485
Innodb_rows_deleted 192
Innodb_rows_inserted 190
Innodb_rows_read 78052
Innodb_rows_updated 381
Queries 3830
Questions 3830
每秒输出一次状态信息。
示例二:
mysqladmin -P3357 -uroot -p -h127.0.0.1 -r -i 1 ext |\
awk -F"|" \
"BEGIN{ count=0; }"\
'{ if($2 ~ /Variable_name/ && ((++count)%20 == 1)){\
print "----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --";\
print "---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical";\
}\
else if ($2 ~ /Queries/){queries=$3;}\
else if ($2 ~ /Com_select /){com_select=$3;}\
else if ($2 ~ /Com_insert /){com_insert=$3;}\
else if ($2 ~ /Com_update /){com_update=$3;}\
else if ($2 ~ /Com_delete /){com_delete=$3;}\
else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;}\
else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;}\
else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;}\
else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;}\
else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;}\
else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;}\
else if ($2 ~ /Uptime / && count >= 2){\
printf(" %s |%9d",strftime("%H:%M:%S"),queries);\
printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete);\
printf("|%6d %8d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted);\
printf("|%10d %11d\n",innodb_lor,innodb_phr);\
}}'
输出信息如下:
----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --
---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical
18:19:03 | 3940| 2755 196 397 198| 83252 196 399 198| 34167 0
18:19:03 | 3859| 2701 194 390 191| 81282 194 390 191| 34657 0
18:19:05 | 3966| 2780 196 390 199| 80869 196 390 199| 30819 0
18:19:06 | 3945| 2744 202 400 201| 82245 202 400 201| 34306 0
18:19:07 | 3906| 2746 193 386 191| 82822 193 385 191| 34130 0
18:19:07 | 3905| 2737 193 390 197| 80525 193 391 197| 33663 0
18:19:09 | 4011| 2796 202 406 201| 83102 202 405 201| 32036 0
18:19:10 | 3780| 2633 194 384 191| 79609 194 385 191| 33609 0
18:19:11 | 4029| 2828 200 397 200| 83925 200 397 200| 34937 0
18:19:11 | 3967| 2782 195 394 198| 81974 195 394 198| 32820 0
18:19:13 | 3980| 2792 199 395 196| 84181 199 393 196| 34337 0
这里的输出结果已经可以和Orzdba想媲美了。

浙公网安备 33010602011771号