作为数据库搬运人员,手上有几个工具脚本。 这些是帮助您提高搬运效率,快速进行故障排除的工具。
在生产环境中部署MySQL时,将对具有相同配置的MySQL数据库进行QPS和TPS测量,以获取QPS和TPS容量数据。 在投入生产后,当APP应用程序的TPS和QPS达到容量警告阈值时,建议拆分并扩展APP应用程序数据库。
生产中的TPS、QPS指标与数据库对应非常重要,因此在故障排除时,通常会实时确认TPS、QPS指标值。 接下来,介绍一个实时确认TPS、QPS指标值的shell脚本。
脚本的内容如下
#! /安静的航空/bash
MySQL admin-uroot-proot-- socket=/u02/run/3308/MySQL.sock extended-status-i1|awk ' begin { local _ switch } print ' qpscommitrollbacktpsthreads _ conthreads _ runn-------- qpscommitrollbacktpsthreads
$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(local_switch==0)
{local_switch=1; count=0}
else {
计数10 )。
{count=0; print---------------------- nqpscommmmmmmmm }
else{
count=1;
printf ' %-6d %-8d %-7d %-8d %-10d % dn ',q,c,r,c r,tc,tr;
} } '
现在我们用sysbench来模拟业务操作
[ MySQL @ localhost~] $ sys bench/usr/share/sys bench/tests/include/OLTP _ legacy/OLTP.Lua-- MySQL-host=192.168.17.128-- MySQL-port=3308-- MySQL-user=root-MySQL-password=' ro oro s=128---- OLTP-non Trx-mode=select-OLTP-read-only=only
[ 5s ] thds 3360128 TPS :122.91 QPS :2770.42 (r/w/o :1992.38/507.44/270.61 ) lat ) ms,95% ) 33601601618.78 err
[ 10s ] thds :128 TPS :121.83 QPS :2551.02 (r/w/o :1795.04/511.32/244.66 ) lat(ms,95% ) 33601601648.20 errerrrrest
[ 15s ] thds :128 TPS :138.79 QPS :2666.28 (r/w/o :1860.92/527.98/277.39 ) lat ) ms,95% ) 33601708.63Errer
[ 20s ] thds :128 TPS :139.60 QPS :2784.88 (r/w/o :1946.85/558.62/279.41 ) lat(ms,95% ) 336013601376.600 errr6
[ 25s ] thds :128 TPS :131.90 QPS :2694.65 (r/w/o :1890.03/541.01/263.61 ) lat(ms,95% ) 33601453.01ERR
[ 30s ] thds 3360128 TPS :137.50 QPS :2774.16 (r/w/o :1939.17/559.79/275.19 ) lat (ms,95% ) 33601939.29Err06.29
00 reconn/s: 0.00[ 35s ] thds: 128 tps: 142.38 qps: 2755.43 (r/w/o: 1932.54/538.13/284.76) lat (ms,95%): 1533.66 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 128 tps: 134.41 qps: 2731.10 (r/w/o: 1906.81/555.66/268.63) lat (ms,95%): 1453.01 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 76664
write: 21901
other: 10951
total: 109516
transactions: 5475 (135.35 per sec.)
queries: 109516 (2707.35 per sec.)
ignored errors: 1 (0.02 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 40.4493s
total number of events: 5475
Latency (ms):
min: 97.28
avg: 942.69
max: 15577.39
95th percentile: 1533.66
sum: 5161211.71
Threads fairness:
events (avg/stddev): 42.7734/2.45
execution time (avg/stddev): 40.3220/0.11
用途TPS,QPS监控脚本监控,看一下监控内容是否和sysbench的结果有差异
[mysql@localhost ~]$ ./mysql_tps.sh
-------------------------------------------------------
QPS Commit Rollback TPS Threads_con Threads_run
-------------------------------------------------------
3090 186 0 186 130 40
2661 131 0 131 130 89
2603 129 0 129 130 45
2557 92 0 92 130 123
2066 126 0 126 130 11
2638 123 0 123 130 25
2770 174 0 174 130 127
3006 172 0 172 130 39
2797 117 0 117 130 43
2247 103 0 103 130 80
2742 157 0 157 130 119
-------------------------------------------------------
QPS Commit Rollback TPS Threads_con Threads_run
-------------------------------------------------------
2974 159 0 159 130 22
2864 141 0 141 130 23
2754 130 0 130 130 122
2685 149 0 149 130 40
2809 126 0 126 130 21
2631 140 0 140 130 21
2594 126 0 126 130 23
2868 148 0 148 130 28
2696 130 0 130 130 63
2920 148 0 148 130 49
2569 127 0 127 130 37
从sysbench的结果可以看到,TPS为135.35 per sec,QPS为2707.35 per sec
这个结果和我们的脚本监控基本是一致的。
在这里如果想要看insert,update,delete,select语句的执行情况,可以将脚本进行升级,其内容如下 所示
改进型TPS,QPS监控脚本
#!/默默的航空/bash
mysqladmin -uroot -proot --socket=/u02/run/3308/mysql.sock extended-status -i1|awk 'BEGIN{local_switch=0;print "QPS Commit Rollback TPS delete insert select update Threads_con Threads_run n------------------------------------------------------- "}
$2 ~ /Queries$/ {q=$4-lq;lq=$4;}
$2 ~ /Com_commit$/ {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/ {r=$4-lr;lr=$4;}
$2 ~ /Innodb_rows_deleted$/ {deleted=$4-ldeleted;ldeleted=$4;}
$2 ~ /Innodb_rows_inserted$/ {inserted=$4-linserted;linserted=$4;}
$2 ~ /Innodb_rows_read$/ {read=$4-lread;lread=$4;}
$2 ~ /Innodb_rows_updated$/ {updated=$4-lupdated;lupdated=$4;}
$2 ~ /Threads_connected$/ {tc=$4;}
$2 ~ /Threads_running$/ {tr=$4;
if(local_switch==0)
{local_switch=1; count=0}
else {
if(count>10)
{count=0;print "------------------------------------------------------- nQPS Commit Rollback TPS delete insert select update Threads_con Threads_run n------------------------------------------------------- ";}
else{
count+=1;
printf "%-6d %-8d %-7d %-8d %-6d %-8d %-7d %-8d %-10d %d n", q,c,r,c+r,deleted,inserted,read,updated,tc,tr;
} }}'
执行结果如下所示
[mysql@localhost ~]$ ./mysql_tps1.sh
QPS Commit Rollback TPS delete insert select update Threads_con Threads_run
-------------------------------------------------------
2682 122 0 122 125 119 60109 310 130 58
3226 236 0 236 227 239 52536 396 130 36
2902 120 0 120 128 119 53944 255 130 43
2239 103 0 103 93 101 58825 198 130 80
2744 157 0 157 158 158 59333 347 130 121
2661 97 0 97 111 102 52633 196 130 59
2956 160 0 160 150 156 56371 284 130 22
2882 140 0 140 139 141 60888 277 130 27
2753 130 0 130 128 127 57236 278 130 128
2680 150 0 150 153 151 58142 302 130 40
2812 124 0 124 130 130 59764 244 130 20
-------------------------------------------------------
QPS Commit Rollback TPS delete insert select update Threads_con Threads_run
-------------------------------------------------------
2583 126 0 126 129 129 54180 260 130 22
2855 148 0 148 144 146 61005 292 130 28
2720 130 0 130 136 131 59835 278 130 63
2919 148 0 148 142 147 54369 270 130 49
2571 127 0 127 136 134 53447 276 130 37
2715 134 0 134 129 128 58469 260 130 26
2733 135 0 135 132 134 55638 268 130 77
2890 149 0 149 156 155 62622 303 130 26
2911 148 0 148 143 145 54919 285 130 44
2838 139 0 139 137 134 60621 277 130 56
2758 139 0 139 145 144 58161 275 130 45
这个脚本你get了吧。