监控mysql的QPS、读、写脚本

mysqladmin -P3306 -uroot -proot-h127.0.0.1 -r -i 1 extended-status |\

awk -F"|" \

"BEGIN{ count=0; }"\

'{ if($2 ~ /Variable_name/&& ((++count)%20 == 1)){\

    print "----------|---------|--- MySQLCommand Status --|----- Innodb Row Operation ----|-- Buffer Pool Read--";\

    print "---Time---|---QPS---|selectinsert update delete|  read insertedupdated 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);\

}}'

#实时监控SQL语句的执行频率
#mysqladmin -uroot -p123456 -h192.168.56.81 -r -i 1 -c 10 ext |\
mysqladmin -uroot -p123456 -h192.168.56.81 -r -i 1  ext |\
awk -F"|" \
"BEGIN{ count=0; }"\
'{ if($2 ~ /Variable_name/ && ++count == 1){\
    print "----------|---------|----Transactions----|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --|-----threads-----";\
    print "---Time---|---QPS---|commit rollback ~TPS|select insert update delete|  read inserted updated deleted|   logical    physical|connected running";\
}\
else if ($2 ~ /Queries/){queries=$3;}\
else if ($2 ~ /Com_commit /){Com_commit=$3;}\
else if ($2 ~ /Com_rollback /){Com_rollback=$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 ~ /Threads_connected /){Threads_connected=$3;}\
else if ($2 ~ /Threads_running /){Threads_running=$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",Com_commit,Com_rollback,Com_commit+Com_rollback);\
  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",innodb_lor,innodb_phr);\
  printf("|%9d %7d\n",Threads_connected,Threads_running);\
}}'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的输出 MySQL QPS 和性能指标的 shell 脚本: ```bash #!/bin/bash # MySQL 登录信息 USER="username" PASSWORD="password" HOST="localhost" PORT="3306" DB="database_name" # 获取当前时间戳 TIMESTAMP=$(date +%s) # 执行 show global status 命令并保存结果到文件 mysql -u $USER -p$PASSWORD -h $HOST -P $PORT -e "show global status" > status_${TIMESTAMP}.txt # 从结果文件中解析出 QPS 和其他性能指标 COM_COMMIT=$(cat status_${TIMESTAMP}.txt | grep -w "Com_commit" | awk '{print $2}') COM_ROLLBACK=$(cat status_${TIMESTAMP}.txt | grep -w "Com_rollback" | awk '{print $2}') INNODB_ROW_LOCK_TIME_AVG=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_row_lock_time_avg" | awk '{print $2}') INNODB_ROW_LOCK_TIME_MAX=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_row_lock_time_max" | awk '{print $2}') INNODB_ROW_LOCK_TIME_MIN=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_row_lock_time_min" | awk '{print $2}') INNODB_ROW_LOCK_TIME=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_row_lock_time" | awk '{print $2}') INNODB_ROWS_READ=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_rows_read" | awk '{print $2}') INNODB_ROWS_UPDATED=$(cat status_${TIMESTAMP}.txt | grep -w "Innodb_rows_updated" | awk '{print $2}') UPTIME=$(cat status_${TIMESTAMP}.txt | grep -w "Uptime" | awk '{print $2}') # 计算 QPS TOTAL_QUERIES=$((COM_COMMIT + COM_ROLLBACK)) QPS=$(echo "scale=2; $TOTAL_QUERIES / $UPTIME" | bc) # 输出结果 echo "QPS: $QPS" echo "InnoDB Row Lock Time: avg=$INNODB_ROW_LOCK_TIME_AVG, max=$INNODB_ROW_LOCK_TIME_MAX, min=$INNODB_ROW_LOCK_TIME_MIN, total=$INNODB_ROW_LOCK_TIME" echo "InnoDB Rows Read: $INNODB_ROWS_READ" echo "InnoDB Rows Updated: $INNODB_ROWS_UPDATED" # 删除结果文件 rm status_${TIMESTAMP}.txt ``` 你可以将上述代码保存为一个 `mysql_perf.sh` 文件,然后在终端运行 `bash mysql_perf.sh` 来执行脚本。请注意,你需要将脚本中的 MySQL 登录信息和数据库名称替换为你自己的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值