MySQL查詢系統信息
查詢系統狀態信息
使用:mysqladmin-ext的命令
作用
作爲MySQL使用SHOW GLOBAL STATUS 查看數據庫使用狀態的腳本。
便於分析數據庫使用情況:查詢,併發,連接數等等。
這裏作爲腳本進行格式化數據格式進行查詢。【方便查看,原始數據太多了】
腳本1
MySQL系統運行狀態實時監控,已測試 可用,數據比簡陋
#!/bin/bash
mysqladmin -uroot -p{password} ext -i1 | awk 'BEGIN{lswitch=0;
print "|QPS |Commit |Rollback |TPS |Threads_con |Threads_run |";
print "------------------------------------------------------------------------------";}
$2 ~ /Queries$/ {q=$4-lq; lq=$4;}
$2 ~ /Com_commit$/ {c=$4-lc; lc=$4;}
$2 ~ /Com_rollback$/ {r=$4-lr; lr=$4;}
$2 ~ /Threads_connected$/ {tc=$4;}
$2 ~ /Threads_running$/ {tr=$4;
if (lswitch==0)
{
lswitch=1;
count=0;
} else {
if (count>10) {
count=0;
print "------------------------------------------------------------------------------";
print "|QPS |Commit |Rollback |TPS |Threads_con |Threads_run |";
print "------------------------------------------------------------------------------";
} else {
count+=1;
printf ("|%-10d |%-10d |%-10d |%-10d |%-12d |%-12d| \n", q,c,r,c+r,tc,tr);
}
}
}'
腳本2
擴展更多數據的情況,已測試 可用,數據詳細完善
mysqladmin -P3306 -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);\
}}'
查詢各個狀態的線程數量
使用: SHOW PROCESSLIST 命令 [P91]
作用
查詢數據庫各個狀態下的線程數,用以判斷是否存在線程堆積等的情況。
腳本
mysql -u root -p{password} -e 'SHOW PROCESSLIST\G' | grep State: | sort | uniq -c | sort -rn
其他
查看my.cnf文件地址:mysql --help | grep ‘Default options’ -A 1