监控思路
1.通过MySQL 命令 show global status 可以获取MySQL 数据库的各种状态信息
2.其中 'Com_commit','Com_delete','Com_insert','Com_rollback','Com_select','Com_update' 几个参数和QPS/TPS 相关
通过show global status where Variable_name in ( 'Com_commit','Com_delete','Com_insert','Com_rollback','Com_select','Com_update' ) 可以得到 MySQL 从运行开始所执行 insert,select,update,delete,commit等语句总计执行的次数
我们所需要的是每秒的并发值这些总数并不是我们所需要的数据
3.解决方案:
每执行一次上面的SQL就可以获取当前时间的执行总数,我们再下一秒再次执行这个SQL可以获取到下一秒最新的总数,两个总数之间的差值即这一秒时间内的变量。这就是我们想要的结果
其他状态例如缓冲池命中率,和着三个参数有关 'Innodb_buffer_pool_read_requests','Innodb_buffer_pool_read_ahead','Innodb_buffer_pool_reads' 三个数之相加得到所有的请求总数,Innodb_buffer_pool_read_requests 是通过缓冲池请求的总数,用该值除以所有请求总数得到的就是 缓冲池的命中率
脚本样例
话不多说,贴脚本